<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.cccgoe.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SebastianG</id>
	<title>Wiki CCC Göttingen - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cccgoe.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SebastianG"/>
	<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/wiki/Spezial:Beitr%C3%A4ge/SebastianG"/>
	<updated>2026-04-30T12:05:20Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Communication&amp;diff=11176</id>
		<title>Communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Communication&amp;diff=11176"/>
		<updated>2016-09-27T18:07:36Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{attention|Vorsicht, diese Seite ist in der Hauptseite eingebunden!}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;E-Mail:&#039;&#039;&#039;||hallo2015(at)cccgoe.de&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;GPG-Key:&#039;&#039;&#039; ||[https://cccgoe.de/gpg/hallo%40cccgoe.de.asc 0x226427FDE4CFB4F8] &amp;lt;br /&amp;gt;&#039;&#039;Fingerprint: 50F3&amp;amp;nbsp;137D&amp;amp;nbsp;0114&amp;amp;nbsp;7DB8&amp;amp;nbsp;BCF3&amp;amp;nbsp;84CE&amp;amp;nbsp;2264&amp;amp;nbsp;27FD&amp;amp;nbsp;E4CF&amp;amp;nbsp;B4F8&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Matrix-Chat:&#039;&#039;&#039;|| #neotopia:matrix.cccgoe.de [[MatrixChat|(Anleitung/Erklärung für Zugriff)]]&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Mailingliste:&#039;&#039;&#039; ||[https://lists.cccgoe.de/mailman/listinfo/chaos-goettingen subscribe]&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;twitter:&#039;&#039;&#039;||[http://twitter.com/ccc_goe ccc_goe]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
=== [[YASpace|Neotopia]] ===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Adresse:&#039;&#039;&#039;||Von-Bar-Straße 2-4 (&amp;quot;MLP-Haus&amp;quot;), Kellereingang Ostseite, über Parkplatz Kreuzbergring, 37075 Göttingen&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Koordinaten:&#039;&#039;&#039;||Koordinaten: 51°32&#039;43.1880&amp;quot; N, 9°56&#039;42.9360&amp;quot; O [http://www.openstreetmap.org/?mlat=51.54533&amp;amp;mlon=9.94526&amp;amp;zoom=18&amp;amp;layers=M OSM]&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Bananaphone:&#039;&#039;&#039;||+49 551 - 288 770 14 (Mit Anrufbeantworter)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;sip:&#039;&#039;&#039; ||1220481@sipgate.de&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=LightBus/LuaServer&amp;diff=11171</id>
		<title>LightBus/LuaServer</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=LightBus/LuaServer&amp;diff=11171"/>
		<updated>2016-09-20T20:32:40Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Zugriff==&lt;br /&gt;
&lt;br /&gt;
Der Server ist (zur Zeit) auf light.nok.lab im Neotopia-Netzwerk auf TCP Port 1167 erreichbar.&lt;br /&gt;
&lt;br /&gt;
Man kann ihm Lua-Code schicken, der dann ausgeführt wird (jajaja, unsicher, blablabla, aber lustig).&lt;br /&gt;
&lt;br /&gt;
Der Effekt-Server ruft 100x pro Sekunde seinen &amp;quot;Effekt-Stack&amp;quot; auf, auf dem Effekt-Funktionen liegen, die ihm mit dem API-Aufruf api:effect_add(...) hinzugefügt worden sind. Diese Effekt-Funktionen werden in der Reihenfolge ihrer Priorität (aufsteigend) aufgerufen und setzen den Zustand der LEDs.&lt;br /&gt;
&lt;br /&gt;
==Dokumentation der Lua-API==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    LBUS: busmaster: host: example network effect server&lt;br /&gt;
    &lt;br /&gt;
    This implements an effect server (srv.lua) which listens on TCP&lt;br /&gt;
    port 1167 and waits for Lua code there. An API is presented that&lt;br /&gt;
    allows to send animation functions (effects) to the server which&lt;br /&gt;
    it will then run.&lt;br /&gt;
    &lt;br /&gt;
    Uses LJSyscall for implementing the server functionality.&lt;br /&gt;
    &lt;br /&gt;
    API is accessible for the functions in the &amp;quot;api&amp;quot; variable. It&lt;br /&gt;
    offers the following methods:&lt;br /&gt;
    &lt;br /&gt;
    api:set(x, y, r, g, b, alpha_r, alpha_g, alpha_b)&lt;br /&gt;
      set Pixel at x, y to the values r, g, b using alpha values&lt;br /&gt;
      (these are optional and default to 1.0)&lt;br /&gt;
&lt;br /&gt;
    api:get(x, y)&lt;br /&gt;
      get Pixel values r, g, b at x, y&lt;br /&gt;
&lt;br /&gt;
    api:effect_list()&lt;br /&gt;
      return a list of currently loaded/active effects&lt;br /&gt;
    &lt;br /&gt;
    api:effect_add(prio, name, effect)&lt;br /&gt;
      add an effect&lt;br /&gt;
      effect is a function:&lt;br /&gt;
        function(time, data)&lt;br /&gt;
      when called by the server in distinct intervals, time is the&lt;br /&gt;
      current time (in seconds), data is a table containing data&lt;br /&gt;
      that can be configured at runtime (see api:effect_set())&lt;br /&gt;
    &lt;br /&gt;
    api:effect_del(name)&lt;br /&gt;
      remove an effect&lt;br /&gt;
    &lt;br /&gt;
    api:effect_set(name, data_name, value)&lt;br /&gt;
      set an effect&#039;s data_name value&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siehe zur Implementation https://github.com/hwhw/stm32-projects/blob/master/lbus_usb_master/host_tools/luajit/srv.lua&lt;br /&gt;
&lt;br /&gt;
Beispiele für Lua-Code, den man an den Server schicken kann, finden sich hier: https://github.com/hwhw/stm32-projects/tree/master/lbus_usb_master/host_tools/luajit/srv_effects&lt;br /&gt;
&lt;br /&gt;
==Beispiel für Script-Aufruf==&lt;br /&gt;
&lt;br /&gt;
Einzelner API-Call von der Kommandozeile:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ echo &#039;api:effect_list()&#039; | netcat brickme 1167&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einen Effekt (oder eine größere andere Menge Lua-Code) aus einer Datei laden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ cat red_alert.lua | netcat brickme 1167&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Laufzeit-Parameter eines Effekts setzen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ echo &#039;api:effect_set(&amp;quot;red_alert&amp;quot;, &amp;quot;active&amp;quot;, true)&#039; | netcat brickme 1167&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Persistenz==&lt;br /&gt;
&lt;br /&gt;
Der Light Server führt nach dem Booten automatisch die Lua-Skripte im Verzeichnis ~pi/effects.d aus. Hat man z.B. einen Effekt programmiert, der nach dem Booten automatisch im Stack auftauchen soll, legt man ihn in dieses Verzeichnis einfach ab. Dazu ssh pi@light benutzen.&lt;br /&gt;
&lt;br /&gt;
Um Probleme mit dem Dateisystem zu vermeiden, wenn über den Lichtschalter der pi einfach ausgeschaltet wird, wird das Dateisystem per Default mit der read-only Option gemounted. Wenn man also den Inhalt von ~pi/effects.d verändern will, muss man folgende Befehle benutzen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ sudo mount -o remount,rw /&lt;br /&gt;
  $ sudo mount -o remount,ro /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
um das Dateisystem einmal read-write und dann hinterher wieder read-only zu remounten.&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=LightBus/Protokoll&amp;diff=11096</id>
		<title>LightBus/Protokoll</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=LightBus/Protokoll&amp;diff=11096"/>
		<updated>2016-08-06T22:21:18Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
LightBus protocol documentation (WIP)&lt;br /&gt;
=====================================&lt;br /&gt;
&lt;br /&gt;
The LightBus (lbus) is a bus designed for communicating with lighting actors. It might work as a&lt;br /&gt;
generic control bus for other actors/sensors, too. The protocol is designed as a master/slave&lt;br /&gt;
system. There should be one single master in a lbus segment and 1-n slaves.&lt;br /&gt;
&lt;br /&gt;
Physical layer&lt;br /&gt;
--------------&lt;br /&gt;
&lt;br /&gt;
RS485 transceivers are used for communication. The lbus is designed for half-duplex communication,&lt;br /&gt;
where the master is in control by default. Slaves can send, too, but only when asked for it by the&lt;br /&gt;
master.&lt;br /&gt;
&lt;br /&gt;
Data link layer&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
Communication is designed for UARTs. It uses 921600 Baud communication, 8 data bits, 1 stop bit,&lt;br /&gt;
no parity information.&lt;br /&gt;
&lt;br /&gt;
Slaves default to receiving data, the master by default transmits data. Direction can be switched&lt;br /&gt;
if mandated by the protocol.&lt;br /&gt;
&lt;br /&gt;
Network layer&lt;br /&gt;
-------------&lt;br /&gt;
&lt;br /&gt;
On the bus, information is sent in packet entities. A packet is a series of bytes. The first two&lt;br /&gt;
bytes specify the overall length of the packet. A packet is always started by the master, it might,&lt;br /&gt;
however, be continued at a protocol defined point by a slave.&lt;br /&gt;
&lt;br /&gt;
When there is no transmission for a given timeout (TODO: specify it here) after a packet has been&lt;br /&gt;
started but not yet completed, the packet is considered to be done. It is undefined if the&lt;br /&gt;
information transmitted so far is to be considered valid.&lt;br /&gt;
&lt;br /&gt;
General packet format:&lt;br /&gt;
&lt;br /&gt;
packet byte offset: 0    | 1    | 2    | 3...&lt;br /&gt;
                    length      | addr | data&lt;br /&gt;
&lt;br /&gt;
All multi-byte values, like the 16bit length field, are sent in little endian format.&lt;br /&gt;
&lt;br /&gt;
length:&lt;br /&gt;
  the packet length, including potential answer from slaves&lt;br /&gt;
&lt;br /&gt;
addr:&lt;br /&gt;
  the packet&#039;s destination address. The source is always the lbus master, the address specifies&lt;br /&gt;
  the slave&#039;s address or an address of a group of slaves&lt;br /&gt;
  For now, the addresses 128-254 are reserved. They might be used if the protocol at some point&lt;br /&gt;
  gets extended to allow for more addresses or similar use cases. They must not be used until&lt;br /&gt;
  their use is specified.&lt;br /&gt;
  Also, address 0 is reserved and should not be used.&lt;br /&gt;
  Address 255 is reserved to be a group ID assigned implicitly to all slaves.&lt;br /&gt;
&lt;br /&gt;
Transport layer&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
All packets&#039; data sections start with a 1-byte command ID (cmd). ID values 128-255 are reserved&lt;br /&gt;
for future extension.&lt;br /&gt;
&lt;br /&gt;
packet byte offset: 0    | 1    | 2    | 3    | ...&lt;br /&gt;
                    length      | addr | cmd  | cmd_data&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Application layer&lt;br /&gt;
-----------------&lt;br /&gt;
&lt;br /&gt;
The following commands are defined:&lt;br /&gt;
&lt;br /&gt;
0:&lt;br /&gt;
  reserved&lt;br /&gt;
&lt;br /&gt;
1: PING&lt;br /&gt;
  This command sends a ping to a slave controller and expects an answer from the controller.&lt;br /&gt;
&lt;br /&gt;
  addr must not be a group address.&lt;br /&gt;
&lt;br /&gt;
  packet byte offset: 0    | 1    | 2    | 3    | 4&lt;br /&gt;
  sender:             M           | M    | M    | S&lt;br /&gt;
                      5           | addr | 1    | response&lt;br /&gt;
&lt;br /&gt;
2: GET_DATA&lt;br /&gt;
  This command reads data from a slave. The data to return is determined by the 16bit &amp;quot;type&amp;quot;&lt;br /&gt;
  ID. Depending on the ID, the master might send additional information (like a sub-ID).&lt;br /&gt;
  The master has to specify the length of data the slave must send when answering using&lt;br /&gt;
  the overall packet length.&lt;br /&gt;
&lt;br /&gt;
  addr must not be a group address.&lt;br /&gt;
&lt;br /&gt;
  packet byte offset: 0    | 1    | 2    | 3    | 4    | 5    | 6...&lt;br /&gt;
  sender:             M           | M    | M    | M           | S&lt;br /&gt;
                      5+n         | addr | 2    | type        | response&lt;br /&gt;
&lt;br /&gt;
  At this point, the following types and corresponding response lengths (n) are defined:&lt;br /&gt;
&lt;br /&gt;
  id    | n    | description of response&lt;br /&gt;
  ------|------|------------------------------------------------------------------------&lt;br /&gt;
  1     | 1    | operational status&lt;br /&gt;
  2     | 1    | device&#039;s LBUS address&lt;br /&gt;
  3     | 4    | firmware version&lt;br /&gt;
  4     | 4    | bootloader version&lt;br /&gt;
  5     | 1    | length of the stored name of the current firmware&lt;br /&gt;
  6     | 1..m | name of the current firmware&lt;br /&gt;
&lt;br /&gt;
10: LED_SET_16BIT&lt;br /&gt;
  This command sets the 16bit PWM duty cycle for n (one or more) LEDs. After receiving,&lt;br /&gt;
  it will not be effective immediately (see LED_COMMIT).&lt;br /&gt;
  Each LED - and this means physical LED, so an RGB LED consists of 3 LEDs - is&lt;br /&gt;
  identified by a 16bit ID. The packet specifies the first LED ID for which a value&lt;br /&gt;
  is set. All following values apply for the following LED IDs.&lt;br /&gt;
&lt;br /&gt;
  packet byte offset: 0    | 1    | 2    | 3    | 4    | 5    | 6    | 7    | ...&lt;br /&gt;
  sender:             M           | M    | M    | M           | M           | (M)&lt;br /&gt;
                      6+2*n       | addr | 10   | LED ID      | value       | (value...)&lt;br /&gt;
&lt;br /&gt;
11: LED_COMMIT&lt;br /&gt;
  This command will latch the programmed duty cycles to the LED&#039;s PWM, making them&lt;br /&gt;
  effective &lt;br /&gt;
&lt;br /&gt;
  packet byte offset: 0    | 1    | 2    | 3&lt;br /&gt;
  sender:             M           | M    | M&lt;br /&gt;
                      4           | addr | 11&lt;br /&gt;
&lt;br /&gt;
122: RESET_TO_BOOTLOADER&lt;br /&gt;
  This command requests to restart the slave device in bootloader mode. When in&lt;br /&gt;
  bootloader mode already, all running timeouts are stopped, so the device will&lt;br /&gt;
  stay in bootloader mode until explicitly put back into normal mode.&lt;br /&gt;
&lt;br /&gt;
  packet byte offset: 0    | 1    | 2    | 3&lt;br /&gt;
  sender:             M           | M    | M&lt;br /&gt;
                      4           | addr | 122&lt;br /&gt;
&lt;br /&gt;
123: ERASE_CONFIG&lt;br /&gt;
  This command requests to erase the configuration store area of the flash&lt;br /&gt;
  memory. This can be used when resetting a device to factory mode or in order&lt;br /&gt;
  to defragment the configuration store.&lt;br /&gt;
&lt;br /&gt;
  packet byte offset: 0    | 1    | 2    | 3&lt;br /&gt;
  sender:             M           | M    | M&lt;br /&gt;
                      4           | addr | 123&lt;br /&gt;
&lt;br /&gt;
124: SET_ADDRESS&lt;br /&gt;
  This command sets the (new) address (naddr) of a slave.&lt;br /&gt;
  The slave confirms a successful operation by replying with 0.&lt;br /&gt;
  It is only handled in bootloader mode.&lt;br /&gt;
&lt;br /&gt;
  packet byte offset: 0    | 1    | 2    | 3    | 4     | 5&lt;br /&gt;
  sender:             M           | M    | M    | M     | S&lt;br /&gt;
                      6           | addr | 124  | naddr | &amp;lt;result&amp;gt;&lt;br /&gt;
&lt;br /&gt;
125: READ_MEMORY&lt;br /&gt;
  This command requests memory contents from a device.&lt;br /&gt;
  It can be used e.g. to verify a successful firmware flash.&lt;br /&gt;
&lt;br /&gt;
  packet byte offset: 0    | 1    | 2    | 3    | 4    | 5    | 6    | 7    | 7+1...7+n | 8+n  | 9+n  | 10+n | 11+n&lt;br /&gt;
  sender:             M    | M    | M    | M    | M                         | S         | S&lt;br /&gt;
                      12+length   | addr | 125  | address                   | data      | CRC32 for data&lt;br /&gt;
&lt;br /&gt;
126: FLASH_FIRMWARE&lt;br /&gt;
  This command sends data to be put into a device&#039;s flash.&lt;br /&gt;
  When in bootloader mode, the firmware flash pages can be written to.&lt;br /&gt;
  When in default firmware mode, the bootloader flash pages can be written to.&lt;br /&gt;
  Slave sends a result byte 0 when operation was successful.&lt;br /&gt;
&lt;br /&gt;
  packet byte offset: 0    | 1    | 2    | 3    | 4    | 5    | 6..1029    | 1030 | 1032 | 1033 | 1034 | 1035&lt;br /&gt;
  sender:             M    | M    | M    | M    | M           | M          | M                         | S&lt;br /&gt;
                      1036        | addr | 126  | Page ID     | data       | CRC32 for data            | result&lt;br /&gt;
&lt;br /&gt;
127: RESET_TO_FIRMWARE&lt;br /&gt;
  This command will make a slave in bootloader mode reset and boot into firmware&lt;br /&gt;
&lt;br /&gt;
  packet byte offset: 0    | 1    | 2    | 3&lt;br /&gt;
  sender:             M    | M    | M    | M&lt;br /&gt;
                      4           | addr | 127&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Vorlage:Status&amp;diff=10811</id>
		<title>Vorlage:Status</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Vorlage:Status&amp;diff=10811"/>
		<updated>2016-04-05T18:39:54Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: Der alte Drucker wurde &amp;quot;entsorgt&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;thumb tright&amp;quot;&amp;gt;&amp;lt;small&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:#6f6fd7;&amp;quot;|Status NOKLAB&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;| currently &amp;lt;spaceapi mode=js /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Device&lt;br /&gt;
!Status &amp;lt;small&amp;gt;[http://cccgoe.de/w/index.php?title=Vorlage:Status&amp;amp;action=edit edit]&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|[[Raum/Schliesssystem|Tür]] ||style=&amp;quot;background-color: green&amp;quot;| OK&lt;br /&gt;
|-&lt;br /&gt;
|[[3D-Drucker|3D-Drucker-Ultimate ]] ||style=&amp;quot;background-color: green&amp;quot;| ok&lt;br /&gt;
|-&lt;br /&gt;
|[[Noklab/Lab Computer|lab02]] ||style=&amp;quot;background-color: yellow&amp;quot; | zu laut&lt;br /&gt;
|-&lt;br /&gt;
|[[Noklab/Lab Computer|lab03]] ||style=&amp;quot;background-color: lightgreen&amp;quot;| OK - “wheezy”&lt;br /&gt;
|-&lt;br /&gt;
|[[Noklab/Lab Computer|Badblock]] ||style=&amp;quot;background-color: lightgreen&amp;quot;| OK - “jessie”&lt;br /&gt;
|-&lt;br /&gt;
|[[Kuschelig2.0]] || style=&amp;quot;background-color: green&amp;quot;| OK&lt;br /&gt;
|-&lt;br /&gt;
|[[Bweamer]] || style=&amp;quot;background-color: red&amp;quot;|down&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Nerdsee2016&amp;diff=10655</id>
		<title>Nerdsee2016</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Nerdsee2016&amp;diff=10655"/>
		<updated>2016-02-02T20:05:43Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Liste feste Zusagen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wir machen ein Geekend auf Helgoland vom 10.03. bis 13.03., das ist Donnerstag bis Sonntag. Dort haben wir ein Appartementhaus mit etwas über 20 Plätzen ganz für uns. &lt;br /&gt;
&lt;br /&gt;
Interesse besteht, Haus ist reserviert :-)&lt;br /&gt;
&lt;br /&gt;
Fragen? PM yela.&lt;br /&gt;
&lt;br /&gt;
== Wo? ==&lt;br /&gt;
TODO: Linksammlung Helgoland&lt;br /&gt;
&lt;br /&gt;
== Wer? ==&lt;br /&gt;
Die Fahrt ist ein Socialevent des CCCGOE. Wenn du gerne zu unseren regelmäßigen Treffen kommst und dich dort wohlfühlst, dann wird dir die Fahrt wahrscheinlich auch Spaß machen. Wir freuen uns wenn Menschen die noch nicht lange dabei sind sich auch trauen mitzukommen. Auch unsere Freifunkfreunde sind willkommen.&lt;br /&gt;
&lt;br /&gt;
(TBD) Einladungen an CCCH oder HH oder CCCKS?&lt;br /&gt;
&lt;br /&gt;
=== Liste feste Zusagen ===&lt;br /&gt;
Tragt euch ein, wenn ihr fest zusagen wollt.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | i++ || Who? || Notiz Zughinfahrt || Rückfahrt Zuggruppenticket fahren || Kommentar || Essenswünsche &lt;br /&gt;
 |-&lt;br /&gt;
 | 1 || yela || Mittwochabend, noch jemand? || ja || Orga, aber kein wandelndes Helgolandlexikon ;-) ||  &lt;br /&gt;
 |-&lt;br /&gt;
 | 2 || steve || Mittwoch Abend || ja || ||&lt;br /&gt;
 |- &lt;br /&gt;
 | 3 || Strontium || vermutlich Mittwoch Abend || nein || ||&lt;br /&gt;
 |-&lt;br /&gt;
 | 3 || Smurf0815 || vermutlich Mittwoch Abend || nein || ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 ||kjo || vermutlich || nein || ||&lt;br /&gt;
|-&lt;br /&gt;
| 5 ||alex || vermutlich || nein || ||&lt;br /&gt;
|-&lt;br /&gt;
| 6 ||basho || Komme am Fr. von HH aus || nein || ||&lt;br /&gt;
|-&lt;br /&gt;
| 7 ||esgeh || TBD || TBD || ||&lt;br /&gt;
  &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Anreise ==&lt;br /&gt;
10.03. um 4 Uhr morgens der Metronom nach Cuxhaven. Dann 2,5 Stunden mit dem Schiff, das um 10:30 ablegt. Das Schiff fährt noch nach dem Winterfahrplan, also am Sonntag schon um 13 Uhr zurück, d.h. kommen wir bequem wieder zurück nach Göttingen. Die Metronomstrecke ist im Semesterticket mit drin.&lt;br /&gt;
&lt;br /&gt;
=== Zug ===&lt;br /&gt;
==== Hinfahrt 10.03. ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wegen der vielen Möglichkeiten für die Zughinfahrt und mangels verfügbarer Gruppenangebote muss sich jeder selber um seine präferierte Zughinfahrt nach Cuxhaven kümmern! &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Studenten können mit dem Metronom mit ihrem Semesterticket fahren, der fährt um 4:09 ab Göttingen. &lt;br /&gt;
&lt;br /&gt;
Niedersachsentickets gelten erst ab 9 Uhr! Daher ist es für Nicht-Studenten günstiger mit einem IC zu fahren, weil/solange hier Sparangebote verfügbar sind. Hier gibt es zwei Verbindungen: 4:09 und 05:45 (letzte mögliche Option).&lt;br /&gt;
&lt;br /&gt;
Wer keine Lust hat so früh aufzustehen und lieber ausschlafen und in Ruhe Frühstücken mag, der kann Mittwochabend schon nach Cuxhaven fahren und dort übernachten.&lt;br /&gt;
&lt;br /&gt;
==== Rückfahrt ====&lt;br /&gt;
Hier können alle die nicht Studenten sind sich Niedersachsentickets teilen, ggf. wird dieses schon vorbestellt.&lt;br /&gt;
&lt;br /&gt;
=== Schiff ===&lt;br /&gt;
[http://www.cassen-eils.de/linienverkehr/insel-helgoland/schiff-ab-cuxhaven/ Schiff]&lt;br /&gt;
&lt;br /&gt;
ab 10:30 Cuxhaven - Tickets werden vorher zusammen gekauft.&lt;br /&gt;
&lt;br /&gt;
== Unterbringung ==&lt;br /&gt;
Kleines Appartementhaus auf dem Oberland. Liste an verfügbaren Zimmern mit unterschiedlicher Anzahl an Plätzen folgt noch, dann können sich schon vorher Zimmergenossen finden.&lt;br /&gt;
&lt;br /&gt;
== Kosten ==&lt;br /&gt;
Wir bekommen ein gutes Angebot von dem Haus, wahrscheinlich inklusive Essen. Dazu kommt die Zugfahrt und das Schiff. Genaue Zahlen folgen bald.&lt;br /&gt;
&lt;br /&gt;
Mate wird im &amp;quot;Großhandel&amp;quot; vorbestellt. Yela kümmert sich um Gruppenbuchungen für Schiff, Unterkunft, Zug und ggf. Veranstalungen.&lt;br /&gt;
&lt;br /&gt;
Es besteht der Wunsch wie beim Camp Menschen einen Fahrtzuschuss vom Verein zu zahlen, die sich die Fahrt sonst nicht leisten können. Darüber müssen wir im Plenum abstimmen.&lt;br /&gt;
&lt;br /&gt;
== Projekte ==&lt;br /&gt;
Hier könnt ihr Projektideen loswerden zum Thema Meer, Sterne, Sturm, etc. :-)&lt;br /&gt;
&lt;br /&gt;
Auch Wünsche aller &amp;quot;das will ich machen&amp;quot; können hier eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
* Fahrt mit einem helgoländer Börteboot (vorher buchen, wenn gewollt)&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=GrillenHH2015&amp;diff=10222</id>
		<title>GrillenHH2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=GrillenHH2015&amp;diff=10222"/>
		<updated>2015-10-26T15:10:50Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wann?&lt;br /&gt;
&lt;br /&gt;
Der Metronom fährt jede Stunde. Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
* 15:07 (Ankunft 19:02)&lt;br /&gt;
* 16:09 (Ankunft 20:01)&lt;br /&gt;
* 17:07 (Ankunft 21:01)&lt;br /&gt;
* 18:09 (Ankunft 22:01)&lt;br /&gt;
&lt;br /&gt;
CCCHH Planungspad:&lt;br /&gt;
&lt;br /&gt;
https://pads.ccc.de/HHHalloween&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | Wer || Was mitbringen || Möchte mit dem Gruppenticket fahren || Sonstiges&lt;br /&gt;
 |-&lt;br /&gt;
 | Steve || 4 Steaks || ja ||  &lt;br /&gt;
 |- &lt;br /&gt;
 | alex || Würstchen, Cuscus Salat || ja || &lt;br /&gt;
 |- &lt;br /&gt;
 | yela || vielleicht Maiskolben am Spieß || ja ||  &lt;br /&gt;
 |- &lt;br /&gt;
 | sg || muss ich mir noch überlegen || ja ||  &lt;br /&gt;
 |- &lt;br /&gt;
 | hw || dieses Himbeerzeug? || nein, Semesterticket ||  &lt;br /&gt;
 |- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10126</id>
		<title>Fredelsloh 2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10126"/>
		<updated>2015-09-17T07:26:49Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Sonstige Themen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Auch 2015 werden wir wieder in unser Lieblings-Refugium in Fredelsloh, fernab des großen Internets (hw bat an, den Freifunk auszumachen), reisen. &lt;br /&gt;
&lt;br /&gt;
== Leute ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Zeit !! travel via !! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| sdx23 || Fr-So || Fahrrad || kommt fraglich&lt;br /&gt;
|-&lt;br /&gt;
| yela || Fr-So || vielleicht Fahrrad oder so || könnte jetzt auch grüne Autos fahren :)&lt;br /&gt;
|-&lt;br /&gt;
| rosa || fr-so || fahrrad || meow&lt;br /&gt;
|-&lt;br /&gt;
| strontium || fr-? || fahrrad || sonntag ist fraglich&lt;br /&gt;
|-&lt;br /&gt;
| pieceofpeace || Fr-? || Auto || &lt;br /&gt;
|-&lt;br /&gt;
| esgeh || Fr-So || keine Ahnung || Darf ich bei wem im Auto mitfahren?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dinge ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;fahrradanhänger&#039;&#039;&#039;? wenn niemand mit auto kommt&lt;br /&gt;
&lt;br /&gt;
=== Vorträge / Workshops ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Monaden&#039;&#039;&#039;? (via sdx23), Interessenten:&lt;br /&gt;
** esgeh (wenn&#039;s vorher ein Haskell-Intro/Sales-Pitch gibt, was mir erklärt, warum Haskell cool ist und was welche kryptischen Zeichen bedeuten, dann bin ich dabei -- Oh, habe gerade [http://de.slideshare.net/tibbe/highperformance-haskell das hier] gesehen. Das schreckt echt von Haskell ab.)&lt;br /&gt;
* [http://rust-lang.org/ &#039;&#039;&#039;Hands-on Rust&#039;&#039;&#039;] (via esgeh), Interessenten:&lt;br /&gt;
** keiner (fällt dann natürlich aus)&lt;br /&gt;
&lt;br /&gt;
=== Sonstige Themen ===&lt;br /&gt;
&lt;br /&gt;
* gemeinsam das [https://tox.chat/ Tox]-[https://github.com/irungentoo/toxcore Protokoll] anschauen?&lt;br /&gt;
* gemeinsam mit unseren [https://rad1o.badge.events.ccc.de/ rad1o Badges] rumspielen.&lt;br /&gt;
* Freifunk?&lt;br /&gt;
&lt;br /&gt;
=== Verpflegung / Kochen ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pizza&#039;&#039;&#039; ?!&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10125</id>
		<title>Fredelsloh 2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10125"/>
		<updated>2015-09-16T13:47:05Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Auch 2015 werden wir wieder in unser Lieblings-Refugium in Fredelsloh, fernab des großen Internets (hw bat an, den Freifunk auszumachen), reisen. &lt;br /&gt;
&lt;br /&gt;
== Leute ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Zeit !! travel via !! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| sdx23 || Fr-So || Fahrrad || kommt fraglich&lt;br /&gt;
|-&lt;br /&gt;
| yela || Fr-So || vielleicht Fahrrad oder so || könnte jetzt auch grüne Autos fahren :)&lt;br /&gt;
|-&lt;br /&gt;
| rosa || fr-so || fahrrad || meow&lt;br /&gt;
|-&lt;br /&gt;
| strontium || fr-? || fahrrad || sonntag ist fraglich&lt;br /&gt;
|-&lt;br /&gt;
| pieceofpeace || Fr-? || Auto || &lt;br /&gt;
|-&lt;br /&gt;
| esgeh || Fr-So || keine Ahnung || Darf ich bei wem im Auto mitfahren?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dinge ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;fahrradanhänger&#039;&#039;&#039;? wenn niemand mit auto kommt&lt;br /&gt;
&lt;br /&gt;
=== Vorträge / Workshops ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Monaden&#039;&#039;&#039;? (via sdx23), Interessenten:&lt;br /&gt;
** esgeh (wenn&#039;s vorher ein Haskell-Intro/Sales-Pitch gibt, was mir erklärt, warum Haskell cool ist und was welche kryptischen Zeichen bedeuten, dann bin ich dabei -- Oh, habe gerade [http://de.slideshare.net/tibbe/highperformance-haskell das hier] gesehen. Das schreckt echt von Haskell ab.)&lt;br /&gt;
* [http://rust-lang.org/ &#039;&#039;&#039;Hands-on Rust&#039;&#039;&#039;] (via esgeh), Interessenten:&lt;br /&gt;
** keiner (fällt dann natürlich aus)&lt;br /&gt;
&lt;br /&gt;
=== Sonstige Themen ===&lt;br /&gt;
&lt;br /&gt;
* gemeinsam das [https://tox.chat/ Tox]-[https://github.com/irungentoo/toxcore Protokoll] anschauen?&lt;br /&gt;
* gemeinsam mit unseren [https://rad1o.badge.events.ccc.de/ rad1o Badges] rumspielen.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=== Verpflegung / Kochen ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pizza&#039;&#039;&#039; ?!&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10123</id>
		<title>Fredelsloh 2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10123"/>
		<updated>2015-09-16T12:46:50Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Leute */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Auch 2015 werden wir wieder in unser Lieblings-Refugium in Fredelsloh, fernab des großen Internets (hw bat an, den Freifunk auszumachen), reisen. &lt;br /&gt;
&lt;br /&gt;
== Leute ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Zeit !! travel via !! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| sdx23 || Fr-So || Fahrrad || kommt fraglich&lt;br /&gt;
|-&lt;br /&gt;
| yela || Fr-So || vielleicht Fahrrad oder so || &lt;br /&gt;
|-&lt;br /&gt;
| rosa || fr-so || fahrrad || meow&lt;br /&gt;
|-&lt;br /&gt;
| strontium || fr-? || fahrrad || sonntag ist fraglich&lt;br /&gt;
|-&lt;br /&gt;
| pieceofpeace || Fr-? || Auto || &lt;br /&gt;
|-&lt;br /&gt;
| esgeh || Fr-So || keine Ahnung || Darf ich bei wem im Auto mitfahren?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dinge ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;fahrradanhänger&#039;&#039;&#039;? wenn niemand mit auto kommt&lt;br /&gt;
&lt;br /&gt;
=== Vorträge / Workshops ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Monaden&#039;&#039;&#039;? (via sdx23), Interessenten:&lt;br /&gt;
** esgeh (wenn&#039;s vorher ein Haskell-Intro gibt, was mir erklärt, was welche kryptischen Zeichen bedeuten, dann bin ich dabei)&lt;br /&gt;
* [http://rust-lang.org/ &#039;&#039;&#039;Hands-on Rust&#039;&#039;&#039;] (via esgeh), Interessenten:&lt;br /&gt;
** keiner (fällt dann natürlich aus)&lt;br /&gt;
&lt;br /&gt;
=== Sonstige Themen ===&lt;br /&gt;
&lt;br /&gt;
* gemeinsam das [https://tox.chat/ Tox]-[https://github.com/irungentoo/toxcore Protokoll] anschauen?&lt;br /&gt;
* gemeinsam mit unseren [https://rad1o.badge.events.ccc.de/ rad1o Badges] rumspielen.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=== Verpflegung / Kochen ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pizza&#039;&#039;&#039; ?!&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Tox&amp;diff=10122</id>
		<title>Tox</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Tox&amp;diff=10122"/>
		<updated>2015-09-16T12:44:48Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* uTox */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* https://tox.chat/&lt;br /&gt;
* https://github.com/irungentoo/toxcore&lt;br /&gt;
&lt;br /&gt;
= Tox-Telefonbuch =&lt;br /&gt;
&lt;br /&gt;
Bitte alphabetisch sortieren ;-)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Who                    !! Tox pub key         &lt;br /&gt;
|-&lt;br /&gt;
| blackspear             || F982D69D29234EF88B808857395D6EA72279D5C014A93C422A7AC56BAE16751FAC00B4E2EF41&lt;br /&gt;
|-&lt;br /&gt;
| emzy                   || 7099657688060F636709A8995842AF76F2D5FD11807584ADBB38395D37322558AB65D80B4253&lt;br /&gt;
|-&lt;br /&gt;
| hw                     || 666F3A7B41EF3D75E281092C8F98DD76123B3CBC9D5CBE91508EBF82E265695DFA91FD1EF73C&lt;br /&gt;
|-&lt;br /&gt;
| pieceofpeace           || DFC5A257F623083EB39CC090F3216F8B95D67CE76C99E857D1AB78870BF5072274D4A85D78A4&lt;br /&gt;
|-&lt;br /&gt;
| vollkorn               || 60E4A2C94598C5812EBDFB038389419C605AD97ED3BDDB7842D2E5B709C0D3750413BF942229&lt;br /&gt;
|-&lt;br /&gt;
| yela                   || F8B28FE1AFC34BD74C037849A34FB41527E282CD621D9CC20F26DDA03D12FA5665C22D80B627&lt;br /&gt;
|-&lt;br /&gt;
| birko                  || 788A4B869E89A1008ED09A72C01B8DFB00CD00C6481351D48DDFFF0A3851940A0A65D0D74837&lt;br /&gt;
|-&lt;br /&gt;
| esgeh                  || B1E55E08519CE17907543C6A66CFC5A591FD77A29EE6E266E7278BA8032D2F393CEBDAECFB1F&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Clients =&lt;br /&gt;
&lt;br /&gt;
== qTox ==&lt;br /&gt;
Funktioniert ganz gut, auch für Videotelephonie. Getestet unter Arch Linux.&lt;br /&gt;
&lt;br /&gt;
Wenn mehrere qTox Clients auf unterschiedlichen Rechnern laufen sollen, kann der Account übertragen werden, indem der Ordner ~/.config/tox/ kopiert wird. Neue Kontakte müssen aber manuell zwischen den Clients synchronisiert werden!&lt;br /&gt;
&lt;br /&gt;
== uTox ==&lt;br /&gt;
&lt;br /&gt;
uTox sieht so ähnlich aus wie qTox, hat nur anscheinend weniger Einstellungsmöglichkeiten und Features.&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Tox&amp;diff=10121</id>
		<title>Tox</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Tox&amp;diff=10121"/>
		<updated>2015-09-16T12:43:27Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Tox-Telefonbuch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* https://tox.chat/&lt;br /&gt;
* https://github.com/irungentoo/toxcore&lt;br /&gt;
&lt;br /&gt;
= Tox-Telefonbuch =&lt;br /&gt;
&lt;br /&gt;
Bitte alphabetisch sortieren ;-)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Who                    !! Tox pub key         &lt;br /&gt;
|-&lt;br /&gt;
| blackspear             || F982D69D29234EF88B808857395D6EA72279D5C014A93C422A7AC56BAE16751FAC00B4E2EF41&lt;br /&gt;
|-&lt;br /&gt;
| emzy                   || 7099657688060F636709A8995842AF76F2D5FD11807584ADBB38395D37322558AB65D80B4253&lt;br /&gt;
|-&lt;br /&gt;
| hw                     || 666F3A7B41EF3D75E281092C8F98DD76123B3CBC9D5CBE91508EBF82E265695DFA91FD1EF73C&lt;br /&gt;
|-&lt;br /&gt;
| pieceofpeace           || DFC5A257F623083EB39CC090F3216F8B95D67CE76C99E857D1AB78870BF5072274D4A85D78A4&lt;br /&gt;
|-&lt;br /&gt;
| vollkorn               || 60E4A2C94598C5812EBDFB038389419C605AD97ED3BDDB7842D2E5B709C0D3750413BF942229&lt;br /&gt;
|-&lt;br /&gt;
| yela                   || F8B28FE1AFC34BD74C037849A34FB41527E282CD621D9CC20F26DDA03D12FA5665C22D80B627&lt;br /&gt;
|-&lt;br /&gt;
| birko                  || 788A4B869E89A1008ED09A72C01B8DFB00CD00C6481351D48DDFFF0A3851940A0A65D0D74837&lt;br /&gt;
|-&lt;br /&gt;
| esgeh                  || B1E55E08519CE17907543C6A66CFC5A591FD77A29EE6E266E7278BA8032D2F393CEBDAECFB1F&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Clients =&lt;br /&gt;
&lt;br /&gt;
== qTox ==&lt;br /&gt;
Funktioniert ganz gut, auch für Videotelephonie. Getestet unter Arch Linux.&lt;br /&gt;
&lt;br /&gt;
Wenn mehrere qTox Clients auf unterschiedlichen Rechnern laufen sollen, kann der Account übertragen werden, indem der Ordner ~/.config/tox/ kopiert wird. Neue Kontakte müssen aber manuell zwischen den Clients synchronisiert werden!&lt;br /&gt;
&lt;br /&gt;
== uTox ==&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10114</id>
		<title>Fredelsloh 2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10114"/>
		<updated>2015-09-16T09:23:05Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Dinge */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Auch 2015 werden wir wieder in unser Lieblings-Refugium in Fredelsloh, fernab des großen Internets (hw bat an, den Freifunk auszumachen), reisen. &lt;br /&gt;
&lt;br /&gt;
== Leute ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Zeit !! travel via !! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| sdx23 || Fr-So || Fahrrad || kommt fraglich&lt;br /&gt;
|-&lt;br /&gt;
| yela || Fr-So || vielleicht Fahrrad oder so || &lt;br /&gt;
|-&lt;br /&gt;
| rosa || fr-so || fahrrad || meow&lt;br /&gt;
|-&lt;br /&gt;
| strontium || fr-? || fahrrad || sonntag ist fraglich&lt;br /&gt;
|-&lt;br /&gt;
| pieceofpeace || Fr-? || Auto || &lt;br /&gt;
|-&lt;br /&gt;
| esgeh || Fr-So || Mitfahrer? ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dinge ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;fahrradanhänger&#039;&#039;&#039;? wenn niemand mit auto kommt&lt;br /&gt;
&lt;br /&gt;
=== Vorträge / Workshops ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Monaden&#039;&#039;&#039;? (via sdx23), Interessenten:&lt;br /&gt;
** esgeh (wenn&#039;s vorher ein Haskell-Intro gibt, was mir erklärt, was welche kryptischen Zeichen bedeuten, dann bin ich dabei)&lt;br /&gt;
* [http://rust-lang.org/ &#039;&#039;&#039;Hands-on Rust&#039;&#039;&#039;] (via esgeh), Interessenten:&lt;br /&gt;
** keiner (fällt dann natürlich aus)&lt;br /&gt;
&lt;br /&gt;
=== Sonstige Themen ===&lt;br /&gt;
&lt;br /&gt;
* gemeinsam das [https://tox.chat/ Tox]-[https://github.com/irungentoo/toxcore Protokoll] anschauen?&lt;br /&gt;
* gemeinsam mit unseren [https://rad1o.badge.events.ccc.de/ rad1o Badges] rumspielen.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=== Verpflegung / Kochen ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pizza&#039;&#039;&#039; ?!&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10113</id>
		<title>Fredelsloh 2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10113"/>
		<updated>2015-09-16T09:17:16Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Vorträge / Workshops */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Auch 2015 werden wir wieder in unser Lieblings-Refugium in Fredelsloh, fernab des großen Internets (hw bat an, den Freifunk auszumachen), reisen. &lt;br /&gt;
&lt;br /&gt;
== Leute ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Zeit !! travel via !! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| sdx23 || Fr-So || Fahrrad || kommt fraglich&lt;br /&gt;
|-&lt;br /&gt;
| yela || Fr-So || vielleicht Fahrrad oder so || &lt;br /&gt;
|-&lt;br /&gt;
| rosa || fr-so || fahrrad || meow&lt;br /&gt;
|-&lt;br /&gt;
| strontium || fr-? || fahrrad || sonntag ist fraglich&lt;br /&gt;
|-&lt;br /&gt;
| pieceofpeace || Fr-? || Auto || &lt;br /&gt;
|-&lt;br /&gt;
| esgeh || Fr-So || Mitfahrer? ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dinge ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;fahrradanhänger&#039;&#039;&#039;? wenn niemand mit auto kommt&lt;br /&gt;
&lt;br /&gt;
=== Vorträge / Workshops ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Monaden&#039;&#039;&#039;? (via sdx23), Interessenten:&lt;br /&gt;
** esgeh (wenn&#039;s vorher ein Haskell-Intro gibt, was mir erklärt, was welche kryptischen Zeichen bedeuten, dann bin ich dabei)&lt;br /&gt;
* [http://rust-lang.org/ &#039;&#039;&#039;Hands-on Rust&#039;&#039;&#039;] (via esgeh), Interessenten:&lt;br /&gt;
** keiner (fällt dann natürlich aus)&lt;br /&gt;
&lt;br /&gt;
=== Verpflegung / Kochen ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pizza&#039;&#039;&#039; ?!&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10112</id>
		<title>Fredelsloh 2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10112"/>
		<updated>2015-09-16T09:15:19Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Vorträge / Workshops */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Auch 2015 werden wir wieder in unser Lieblings-Refugium in Fredelsloh, fernab des großen Internets (hw bat an, den Freifunk auszumachen), reisen. &lt;br /&gt;
&lt;br /&gt;
== Leute ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Zeit !! travel via !! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| sdx23 || Fr-So || Fahrrad || kommt fraglich&lt;br /&gt;
|-&lt;br /&gt;
| yela || Fr-So || vielleicht Fahrrad oder so || &lt;br /&gt;
|-&lt;br /&gt;
| rosa || fr-so || fahrrad || meow&lt;br /&gt;
|-&lt;br /&gt;
| strontium || fr-? || fahrrad || sonntag ist fraglich&lt;br /&gt;
|-&lt;br /&gt;
| pieceofpeace || Fr-? || Auto || &lt;br /&gt;
|-&lt;br /&gt;
| esgeh || Fr-So || Mitfahrer? ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dinge ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;fahrradanhänger&#039;&#039;&#039;? wenn niemand mit auto kommt&lt;br /&gt;
&lt;br /&gt;
=== Vorträge / Workshops ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Monaden&#039;&#039;&#039;? (via sdx23), Interessenten:&lt;br /&gt;
** esgeh (wenn&#039;s vorher ein Haskell-Intro gibt, was mir erklärt, was welche kryptischen Zeichen bedeuten, dann bin ich dabei)&lt;br /&gt;
* [http://rust-lang.org/ &#039;&#039;&#039;Rust&#039;&#039;&#039;] (via esgeh), Interessenten:&lt;br /&gt;
** keiner (fällt dann natürlich aus)&lt;br /&gt;
&lt;br /&gt;
=== Verpflegung / Kochen ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pizza&#039;&#039;&#039; ?!&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10111</id>
		<title>Fredelsloh 2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10111"/>
		<updated>2015-09-16T09:12:36Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Vorträge / Workshops */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Auch 2015 werden wir wieder in unser Lieblings-Refugium in Fredelsloh, fernab des großen Internets (hw bat an, den Freifunk auszumachen), reisen. &lt;br /&gt;
&lt;br /&gt;
== Leute ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Zeit !! travel via !! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| sdx23 || Fr-So || Fahrrad || kommt fraglich&lt;br /&gt;
|-&lt;br /&gt;
| yela || Fr-So || vielleicht Fahrrad oder so || &lt;br /&gt;
|-&lt;br /&gt;
| rosa || fr-so || fahrrad || meow&lt;br /&gt;
|-&lt;br /&gt;
| strontium || fr-? || fahrrad || sonntag ist fraglich&lt;br /&gt;
|-&lt;br /&gt;
| pieceofpeace || Fr-? || Auto || &lt;br /&gt;
|-&lt;br /&gt;
| esgeh || Fr-So || Mitfahrer? ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dinge ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;fahrradanhänger&#039;&#039;&#039;? wenn niemand mit auto kommt&lt;br /&gt;
&lt;br /&gt;
=== Vorträge / Workshops ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Monaden&#039;&#039;&#039;? (via sdx23), Interessenten:&lt;br /&gt;
** esgeh (wenn&#039;s vorher ein Haskell-Intro gibt, was mir erklärt, was welche kryptischen Zeichen bedeuten, dann bin ich dabei)&lt;br /&gt;
* &#039;&#039;&#039;Rust&#039;&#039;&#039; (via esgeh), Interessenten:&lt;br /&gt;
** keiner (fällt dann natürlich aus)&lt;br /&gt;
&lt;br /&gt;
=== Verpflegung / Kochen ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pizza&#039;&#039;&#039; ?!&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10110</id>
		<title>Fredelsloh 2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10110"/>
		<updated>2015-09-16T09:11:18Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Dinge */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Auch 2015 werden wir wieder in unser Lieblings-Refugium in Fredelsloh, fernab des großen Internets (hw bat an, den Freifunk auszumachen), reisen. &lt;br /&gt;
&lt;br /&gt;
== Leute ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Zeit !! travel via !! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| sdx23 || Fr-So || Fahrrad || kommt fraglich&lt;br /&gt;
|-&lt;br /&gt;
| yela || Fr-So || vielleicht Fahrrad oder so || &lt;br /&gt;
|-&lt;br /&gt;
| rosa || fr-so || fahrrad || meow&lt;br /&gt;
|-&lt;br /&gt;
| strontium || fr-? || fahrrad || sonntag ist fraglich&lt;br /&gt;
|-&lt;br /&gt;
| pieceofpeace || Fr-? || Auto || &lt;br /&gt;
|-&lt;br /&gt;
| esgeh || Fr-So || Mitfahrer? ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dinge ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;fahrradanhänger&#039;&#039;&#039;? wenn niemand mit auto kommt&lt;br /&gt;
&lt;br /&gt;
=== Vorträge / Workshops ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Monaden&#039;&#039;&#039;? (via sdx23), Interessenten:&lt;br /&gt;
** esgeh&lt;br /&gt;
* &#039;&#039;&#039;Rust&#039;&#039;&#039; (via esgeh), Interessenten:&lt;br /&gt;
** keiner (fällt dann natürlich aus)&lt;br /&gt;
&lt;br /&gt;
=== Verpflegung / Kochen ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pizza&#039;&#039;&#039; ?!&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10109</id>
		<title>Fredelsloh 2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Fredelsloh_2015&amp;diff=10109"/>
		<updated>2015-09-16T09:07:07Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Leute */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Auch 2015 werden wir wieder in unser Lieblings-Refugium in Fredelsloh, fernab des großen Internets (hw bat an, den Freifunk auszumachen), reisen. &lt;br /&gt;
&lt;br /&gt;
== Leute ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Zeit !! travel via !! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| sdx23 || Fr-So || Fahrrad || kommt fraglich&lt;br /&gt;
|-&lt;br /&gt;
| yela || Fr-So || vielleicht Fahrrad oder so || &lt;br /&gt;
|-&lt;br /&gt;
| rosa || fr-so || fahrrad || meow&lt;br /&gt;
|-&lt;br /&gt;
| strontium || fr-? || fahrrad || sonntag ist fraglich&lt;br /&gt;
|-&lt;br /&gt;
| pieceofpeace || Fr-? || Auto || &lt;br /&gt;
|-&lt;br /&gt;
| esgeh || Fr-So || Mitfahrer? ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dinge ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;fahrradanhänger&#039;&#039;&#039;? wenn niemand mit auto kommt&lt;br /&gt;
&lt;br /&gt;
=== Vorträge / Workshops ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Monaden&#039;&#039;&#039;? (via sdx23)&lt;br /&gt;
&lt;br /&gt;
=== Verpflegung / Kochen ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pizza&#039;&#039;&#039; ?!&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Vorlage:Termine&amp;diff=10072</id>
		<title>Vorlage:Termine</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Vorlage:Termine&amp;diff=10072"/>
		<updated>2015-09-07T20:07:43Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#8f8fe7;&amp;quot;|Termine von uns, benachbarten Erfas und Veranstaltungen zu denen wir fahren&amp;lt;!--NUR VON HAND EDITIEREN, WENN MAN, WEISS WAS MAN TUT! Sonst timemaster verwenden - cccgoelock: help addevent--&amp;gt;&lt;br /&gt;
|-	&lt;br /&gt;
! style=&amp;quot;width:16em;&amp;quot;|Date || Veranstaltung || Location&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;13 Aug - 17 Aug&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;&amp;quot; | [[Camp2015]]&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;Ziegeleipark Mildenberg&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &#039;&#039;&#039;20 Aug 20:00&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;background-color:#FFCECE;&amp;quot; | [https://cccgoe.de/wiki/Freifunk Freifunk-Treffen]&lt;br /&gt;
| style=&amp;quot;background-color:#FFCECE;&amp;quot; align=&amp;quot;right&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;NOKLAB&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &#039;&#039;&#039;27 Aug 20:00&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;background-color:#FFCECE;&amp;quot; | [https://cccgoe.de/wiki/Freifunk Freifunk-Treffen]&lt;br /&gt;
| style=&amp;quot;background-color:#FFCECE;&amp;quot; align=&amp;quot;right&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;NOKLAB&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;29 Aug - 30 Aug&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;&amp;quot; | [https://www.interfug.de/ Interfug]&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;Chemnitz&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &#039;&#039;&#039;3 Sep 20:00&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;background-color:#FFCECE;&amp;quot; | [https://cccgoe.de/wiki/Freifunk Freifunk-Treffen]&lt;br /&gt;
| style=&amp;quot;background-color:#FFCECE;&amp;quot; align=&amp;quot;right&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;NOKLAB&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;04 Sep - 06 Sep&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;&amp;quot; | [https://mrmcd.net/2015/ MRMCD]&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;HS Darmstadt&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &#039;&#039;&#039;07 Sep 19:00&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;background-color:#FFCECE;&amp;quot; | [http://www.goepy.de GoePy - Göttinger Python User Group]&lt;br /&gt;
| style=&amp;quot;background-color:#FFCECE;&amp;quot; align=&amp;quot;right&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;NOKLAB&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &#039;&#039;&#039;08 Sep 20:00&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;background-color:#FFCECE;&amp;quot; | [[OpenChaos]]&lt;br /&gt;
| style=&amp;quot;background-color:#FFCECE;&amp;quot; align=&amp;quot;right&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;NOKLAB&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &#039;&#039;&#039;10 Sep 20:00&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;background-color:#FFCECE;&amp;quot; | [https://cccgoe.de/wiki/Freifunk Freifunk-Treffen]&lt;br /&gt;
| style=&amp;quot;background-color:#FFCECE;&amp;quot; align=&amp;quot;right&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;NOKLAB&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &#039;&#039;&#039;17 Sep 20:00&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;background-color:#FFCECE;&amp;quot; | [https://cccgoe.de/wiki/Freifunk Freifunk-Treffen]&lt;br /&gt;
| style=&amp;quot;background-color:#FFCECE;&amp;quot; align=&amp;quot;right&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;NOKLAB&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &#039;&#039;&#039;24 Sep 20:00&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;background-color:#FFCECE;&amp;quot; | [https://cccgoe.de/wiki/Freifunk Freifunk-Treffen]&lt;br /&gt;
| style=&amp;quot;background-color:#FFCECE;&amp;quot; align=&amp;quot;right&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;NOKLAB&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;16 Oct - 18 Oct&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;&amp;quot; | [https://hackover.de/ Hackover]&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;Hannover&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;24 Oct - 25 Oct&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;&amp;quot; | [https://www.datenspuren.de/2015/ Datenspuren]&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;Dresden&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;27 Dec - 30 Dec&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;&amp;quot; | 32C3&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;Hamburg&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Camp2015-Telefonliste&amp;diff=9987</id>
		<title>Camp2015-Telefonliste</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Camp2015-Telefonliste&amp;diff=9987"/>
		<updated>2015-08-12T16:35:56Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Camp2015-Telefonliste == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nick         !! DECT !! GSM&lt;br /&gt;
|-&lt;br /&gt;
| pieceofpeace || 2402 || 2403&lt;br /&gt;
|-&lt;br /&gt;
| strontium || || 2322&lt;br /&gt;
|-&lt;br /&gt;
| Hydrox || || 3685&lt;br /&gt;
|-&lt;br /&gt;
| Thoddi || 3130 || &lt;br /&gt;
|-&lt;br /&gt;
| rosa || || 6350&lt;br /&gt;
|-&lt;br /&gt;
| Georg || 6235 || 6234&lt;br /&gt;
|-&lt;br /&gt;
| Wurzelpi || 2259 ||&lt;br /&gt;
|-&lt;br /&gt;
| Unixcorn || || 2358&lt;br /&gt;
|-&lt;br /&gt;
| esgeh || 2404 ||&lt;br /&gt;
|-&lt;br /&gt;
| yela || 9352 ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Camp2015-Telefonliste&amp;diff=9986</id>
		<title>Camp2015-Telefonliste</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Camp2015-Telefonliste&amp;diff=9986"/>
		<updated>2015-08-12T16:34:22Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Camp2015-Telefonliste == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nick         !! DECT !! GSM&lt;br /&gt;
|-&lt;br /&gt;
| pieceofpeace || 2402 || 2403&lt;br /&gt;
|-&lt;br /&gt;
| strontium || || 2322&lt;br /&gt;
|-&lt;br /&gt;
| Hydrox || || 3685&lt;br /&gt;
|-&lt;br /&gt;
| Thoddi || 3130 || &lt;br /&gt;
|-&lt;br /&gt;
| rosa || || 6350&lt;br /&gt;
|-&lt;br /&gt;
| Georg || 6235 || 6234&lt;br /&gt;
|-&lt;br /&gt;
| Wurzelpi || 2259 ||&lt;br /&gt;
|-&lt;br /&gt;
| Unixcorn || || 2358&lt;br /&gt;
|-&lt;br /&gt;
| esgeh || 2404 ||&lt;br /&gt;
|-&lt;br /&gt;
| yela || 9351 ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Camp2015-Telefonliste&amp;diff=9985</id>
		<title>Camp2015-Telefonliste</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Camp2015-Telefonliste&amp;diff=9985"/>
		<updated>2015-08-12T16:21:38Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Camp2015-Telefonliste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Camp2015-Telefonliste == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nick         !! DECT !! GSM&lt;br /&gt;
|-&lt;br /&gt;
| pieceofpeace || 2402 || 2403&lt;br /&gt;
|-&lt;br /&gt;
| strontium || || 2322&lt;br /&gt;
|-&lt;br /&gt;
| Hydrox || || 3685&lt;br /&gt;
|-&lt;br /&gt;
| Thoddi || 3130 || &lt;br /&gt;
|-&lt;br /&gt;
| rosa || || 6350&lt;br /&gt;
|-&lt;br /&gt;
| Georg || 6235 || 6234&lt;br /&gt;
|-&lt;br /&gt;
| Wurzelpi || 2259 ||&lt;br /&gt;
|-&lt;br /&gt;
| Unixcorn || || 2358&lt;br /&gt;
|-&lt;br /&gt;
| esgeh || 2404 ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Camp2015-Telefonliste&amp;diff=9984</id>
		<title>Camp2015-Telefonliste</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Camp2015-Telefonliste&amp;diff=9984"/>
		<updated>2015-08-12T16:17:49Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Camp2015-Telefonliste == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nick         !! DECT !! GSM&lt;br /&gt;
|-&lt;br /&gt;
| pieceofpeace || 2402 || 2403&lt;br /&gt;
|-&lt;br /&gt;
| esgeh || 2404 ||&lt;br /&gt;
|-&lt;br /&gt;
| strontium || || 2322&lt;br /&gt;
|-&lt;br /&gt;
| Hydrox || || 3685&lt;br /&gt;
|-&lt;br /&gt;
| Thoddi || 3130 || &lt;br /&gt;
|-&lt;br /&gt;
| rosa || || 6350&lt;br /&gt;
|-&lt;br /&gt;
| Georg || 6235 || 6234&lt;br /&gt;
|-&lt;br /&gt;
| Wurzelpi || 2259 ||&lt;br /&gt;
|-&lt;br /&gt;
| Unixcorn || || 2358&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Camp2015-Telefonliste&amp;diff=9983</id>
		<title>Camp2015-Telefonliste</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Camp2015-Telefonliste&amp;diff=9983"/>
		<updated>2015-08-12T16:12:07Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Camp2015-Telefonliste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Camp2015-Telefonliste == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Nick         !! DECT !! GSM&lt;br /&gt;
|-&lt;br /&gt;
| pieceofpeace || 2402 || 2403&lt;br /&gt;
|-&lt;br /&gt;
| esgeh || 2404 ||&lt;br /&gt;
|-&lt;br /&gt;
| strontium || || 2322&lt;br /&gt;
|-&lt;br /&gt;
| Hydrox || || 3685&lt;br /&gt;
|-&lt;br /&gt;
| Thoddi || 3130 || &lt;br /&gt;
|-&lt;br /&gt;
| rosa || || 6358&lt;br /&gt;
|-&lt;br /&gt;
| Georg || 6235 || 6234&lt;br /&gt;
|-&lt;br /&gt;
| Wurzelpi || 2259 ||&lt;br /&gt;
|-&lt;br /&gt;
| Unixcorn || || 2358&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Camp2015&amp;diff=9960</id>
		<title>Camp2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Camp2015&amp;diff=9960"/>
		<updated>2015-08-08T20:42:45Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Teilnehmer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dies ist ein Dorfgründungs-Wiki. Alle potentiellen Bewohner*innen sind aufgerufen, hier fleißig mitzuplanen.&lt;br /&gt;
&lt;br /&gt;
Das Dorf hat im Camp-Wiki eine Seite: https://events.ccc.de/camp/2015/wiki/Village:BigWhoop&lt;br /&gt;
&lt;br /&gt;
== Daten ==&lt;br /&gt;
&#039;&#039;&#039;Termin&#039;&#039;&#039;: 13. - 17. August 2015&lt;br /&gt;
* Presale läuft&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links&#039;&#039;&#039;:&lt;br /&gt;
* Wiki der Veranstaltung:  &lt;br /&gt;
http://events.ccc.de/camp/2015/wiki/Main_Page&lt;br /&gt;
&lt;br /&gt;
== Teilnehmer == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Wer         !! Wie                                       !! ++&lt;br /&gt;
|-&lt;br /&gt;
| HW          || Zug, 12.8.-18.8.                          || muss noch Gepäck unterbringen (Hänger?)&lt;br /&gt;
|-&lt;br /&gt;
| Thoddi      || Auto, 10.8. (abends) - 18.8.              || Könnte Anhänger ziehen / Nimmt Claudius mit.&lt;br /&gt;
|-&lt;br /&gt;
| piece       || Auto                                      || VW Polo, nimmt strontium mit und mehr Gepäck als erwartet :-), Voraussichtlich ab 10.8. Nach dem Camp keine Rückfahrt, weil weiterer Urlaub angehängt&lt;br /&gt;
|-&lt;br /&gt;
| oliver      || Wohnmobil                                 || Leider voll &lt;br /&gt;
|-&lt;br /&gt;
| sg          || Zug (mit HW und Yela)                     || Der Zug (ICE) startet am 12.8. um 12:03 Uhr ab Göttingen. Zurück geht&#039;s am 18.8. um 17:24 Uhr ab Gransee.&lt;br /&gt;
|-&lt;br /&gt;
| emzy        || Auto 12.8 - 18.8.                         || noch Platz für etwas Gepäck.&lt;br /&gt;
|-&lt;br /&gt;
| strontium   || Rad                                       || &lt;br /&gt;
|-&lt;br /&gt;
| kjo         || Auto ||&lt;br /&gt;
|-&lt;br /&gt;
| krapo         || Auto ||&lt;br /&gt;
|-&lt;br /&gt;
| UnixCorn || Kombi                                     || Fahre schon früher hin zum Aufbau, und bringt SG42 mit&lt;br /&gt;
|-&lt;br /&gt;
| Hydrox || Kombi&lt;br /&gt;
|-&lt;br /&gt;
| yela        || Zug, 12.8. (ICE 692,RE 4360)-18.8. (RE 18515,ICE 877)                         || muss noch Gepäck unterbringen (Hänger?)&lt;br /&gt;
|-&lt;br /&gt;
| Georg + 5   || Auto 12.8.-17.8.                          || 6 Pers. &lt;br /&gt;
|-&lt;br /&gt;
| Smurf0815 + Charlotte  || Auto 12.8 - 17.8                          || &lt;br /&gt;
|-&lt;br /&gt;
| Mia         ||                                           || &lt;br /&gt;
|-&lt;br /&gt;
| Rosa        || Roller (250ccm) 10.8                      || nuss noch gepäck unterbringen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bringt mit / stellt bei ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Was !! Wie !! ++&lt;br /&gt;
|-&lt;br /&gt;
| Autoanhänger || hat alex || nimmt Georg mit wg. Anhängelastproblematik&lt;br /&gt;
|-&lt;br /&gt;
| CEE 3x16A auf 3xSchuko || alex || &lt;br /&gt;
|-&lt;br /&gt;
| Stromkabel 2,5mm² in benötigter Länge || alex ||&lt;br /&gt;
|-&lt;br /&gt;
| Induktionskochplatte || Gehört Georg und der ist einverstanden ||&lt;br /&gt;
|-&lt;br /&gt;
| Switch|| piece || 1x1Gbit 8-Port&lt;br /&gt;
|-&lt;br /&gt;
| Switch || emzy || 1x1Gbit 8-Port&lt;br /&gt;
|-&lt;br /&gt;
| Switch|| strontium || 1x1Gbit 8-Port&lt;br /&gt;
|-&lt;br /&gt;
| Switch || FYI || Es gibt eine ganze Reihe 24 Port 100MBit Switches im Gö CCC Fundus&lt;br /&gt;
|-&lt;br /&gt;
| Kühlbox Strom/Gas + 5kg Gasflasche || Thoddi || &lt;br /&gt;
|-&lt;br /&gt;
| Tische || Georg || 3x kl. Klapptische (1x0,5m) || &lt;br /&gt;
|-&lt;br /&gt;
| Bänke || Georg || 1x Bierzeltgarnitur, muss aber wieder im Hänger mit|| &lt;br /&gt;
|-&lt;br /&gt;
| 1x Bierzeltgarnitur|| Thoddi/Nachbarn || Im Hänger || &lt;br /&gt;
|-&lt;br /&gt;
| Leuchtkette || 1 x UnixCorn + 1 x Georg||&lt;br /&gt;
|-&lt;br /&gt;
| Gasherd (2 Platten) + 5kg Gasflasche || 1 x Georg ||&lt;br /&gt;
|-&lt;br /&gt;
| Gasherd (2 Platten) + 2,7kg Campingaz (teureres Kochen) || Thoddi ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 Töpfe (groß, mittel, klein) || Thoddi ||&lt;br /&gt;
|-&lt;br /&gt;
| Beamer || Noklab || für Pixelflut&lt;br /&gt;
|-&lt;br /&gt;
| Loet-/Entloetstation || yela || &lt;br /&gt;
|-&lt;br /&gt;
| 3D Pen + Plastik || yela ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 Kabeltrommeln || yela+hw+Thoddi ||&lt;br /&gt;
|-&lt;br /&gt;
| Schrumpfschlaeuche || yela ||&lt;br /&gt;
|-&lt;br /&gt;
| Heissklebepistole+Drehmel || yela ||&lt;br /&gt;
|-&lt;br /&gt;
| evt Sitzsack und Companion Cube || yela ||&lt;br /&gt;
|-&lt;br /&gt;
| Malerfolien, Notdecken, Heringe, Panzerklebeband, Kabelbinder || emzy ||&lt;br /&gt;
|-&lt;br /&gt;
| 6m Mast, 2 Flaggen, 5m RGB Band, Rasperry, Netzteil || kjo ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Logistik ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Was                    !! Von wo           !! Wohin               !! Wann               !! Mit welchem Transportmittel !! Bemerkungen&lt;br /&gt;
|-&lt;br /&gt;
| Zelt                   || ASB/Auf der Hufe || Camp                || ? (mögl. 12.8. da) || UnixCorn, Kombi             ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Noch offen ==&lt;br /&gt;
* &#039;&#039;&#039;Festzeltgarnituren&#039;&#039;&#039;&lt;br /&gt;
** 1 von Georg, 1 von Thoddi/Nachbarn, dazu Tische von Georg&lt;br /&gt;
* &#039;&#039;&#039;Anhänger&#039;&#039;&#039;&lt;br /&gt;
** Wird von Georg geholt.&lt;br /&gt;
** Steht ab Sonntag (09.08.) in der Beethovenstr. zum packen bereit&lt;br /&gt;
** Fährt am 11.08. zum Camp&lt;br /&gt;
** Im Anhänger: &lt;br /&gt;
*** Festzeltgarnituren (2x)&lt;br /&gt;
*** Tische (3x)&lt;br /&gt;
*** Wenn es nicht bei Thoddi oder in den Passat passt: Stromkabel + Verteilerdose von Alex&lt;br /&gt;
*** Gegenstände aus dem Space&lt;br /&gt;
* &#039;&#039;&#039;Netzwerkkabel&#039;&#039;&#039;&lt;br /&gt;
** einmal 50m zur Switch-Anbindung&lt;br /&gt;
** Wir haben noch 2x 20m und 4x 30m&lt;br /&gt;
* &#039;&#039;&#039;Pixelflut-Installation&#039;&#039;&#039;&lt;br /&gt;
** Rechner? Ggf. Banana Pi von HW?&lt;br /&gt;
** Aufbau?&lt;br /&gt;
** &amp;quot;Leinwand&amp;quot; bzw. Ersatz dafür: Zelt ist *nicht* weiß, sondern oliv/beige.&lt;br /&gt;
&lt;br /&gt;
== wouldn&#039;t it be nice ==&lt;br /&gt;
* Lötstation mit Ausstattung zum rad1o-Erweitern&lt;br /&gt;
&lt;br /&gt;
== Jeder kümmert sich selbst um ==&lt;br /&gt;
&lt;br /&gt;
* Eigenes Zelt, Schlafsack, Isomatte, Handtuch, hygienischen Bedarf, Badelatschen, Schwimmzeug, Wasserflasche, Taschenlampe u.v.m.: https://events.ccc.de/camp/2015/wiki/Static:Things_to_bring&lt;br /&gt;
* Vernetzung und Stromversorgung für das eigene Zelt: ~20m LAN-Kabel, ~20m Kabeltrommel&lt;br /&gt;
&lt;br /&gt;
== Food ==&lt;br /&gt;
* Es werden mindestens 2 - 3 große Töpfe/ Kochgeschirr benötigt  Bekommen wir die zusammen?&lt;br /&gt;
** Georg: Bringe einen 8l Topf und eine Saucen-Pfanne (hoher Rand) in 28cm mit.&lt;br /&gt;
* Vorschläge bitte kommentieren . Weitere Vorschläge erwünscht&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Essensauswahl !! Kommentar&lt;br /&gt;
|-&lt;br /&gt;
| Der Klassiker - Nudeln mit einer Tomatensauce || &lt;br /&gt;
|-&lt;br /&gt;
| Chilli con Carne / con Tofu ||&lt;br /&gt;
|-&lt;br /&gt;
| Ratatouille ||&lt;br /&gt;
|-&lt;br /&gt;
| [https://en.wikipedia.org/wiki/Kushari Kushari] ||&lt;br /&gt;
|-&lt;br /&gt;
| scharfe Linsensuppe oder Eintopf ||&lt;br /&gt;
|-&lt;br /&gt;
| Risotto u.U. mit Gemüse ||&lt;br /&gt;
|-&lt;br /&gt;
| Käsespätzle ||&lt;br /&gt;
|-&lt;br /&gt;
| Grillen + Salate || Ich überlege, einen Gasgrill mitzunehmen. Der ist aber wirklich klein. -- kjo&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Für alle Gerichte brauchen wir natürlich auch entsprechende Vorräte von denen wir vermutlich einige schon aus Gö mitbringen sollten.&lt;br /&gt;
&lt;br /&gt;
@ Georg wäre es vielleicht eine gute Idee so etwas wie Risottoreis, Nudeln, Tomaten, Linsen in größeren Mengen im Großmarkt zu kaufen?&lt;br /&gt;
&lt;br /&gt;
Georg: Bisher haben wir noch keine zuverlässigen Zahlen über die Teilnehmer an den gemeinsamen Essen =&amp;gt; Wir sollten vor Ort nochmal &lt;br /&gt;
rumfragen und dann einfach in Zehdenick einkaufen gehen.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
* Wir bekommen (wenn das insgesamt klappt - Strom ist ja knapp) hoffentlich Platz im Kühlwagen hier: https://events.ccc.de/camp/2015/wiki/User:Joerg/orga/kuehlwagen - haben uns angemeldet. Der Platz reicht für ca. 6-7 Getränkekisten. Wenn wir Pech haben, müssen wir die einmal über den ganzen Platz schleppen - aber dafür gibt es dann hinterher wenigstens etwas kühles zu trinken.&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Vorlage:Termine&amp;diff=9871</id>
		<title>Vorlage:Termine</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Vorlage:Termine&amp;diff=9871"/>
		<updated>2015-06-30T13:40:58Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:#8f8fe7;&amp;quot;|Termine von uns, benachbarten Erfas und Veranstaltungen zu denen wir fahren&amp;lt;!--NUR VON HAND EDITIEREN, WENN MAN, WEISS WAS MAN TUT! Sonst timemaster verwenden - cccgoelock: help addevent--&amp;gt;&lt;br /&gt;
|-	&lt;br /&gt;
! style=&amp;quot;width:16em;&amp;quot;|Date || Veranstaltung || Location&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &#039;&#039;&#039;11 Jun 20:00 Uhr&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;background-color:#FFCECE;&amp;quot; | Freifunktreffen&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;Noklab&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &#039;&#039;&#039;18 Jun 20:00 Uhr&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;background-color:#FFCECE;&amp;quot; | Freifunktreffen&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;Noklab&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &#039;&#039;&#039;25 Jun 20:00 Uhr&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;background-color:#FFCECE;&amp;quot; | Freifunktreffen&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;Noklab&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &#039;&#039;&#039;30 Jun 20:00 Uhr&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;background-color:#FFCECE;&amp;quot; | Open Chaos&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;Noklab&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &#039;&#039;&#039;2 Jul 20:00 Uhr&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;background-color:#FFCECE;&amp;quot; | Freifunktreffen&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;Noklab&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &#039;&#039;&#039;14 Jul 20:00 Uhr&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;background-color:#FFCECE;&amp;quot; | Open Chaos&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;Noklab&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &#039;&#039;&#039;28 Jul 20:00 Uhr&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;background-color:#FFCECE;&amp;quot; | Open Chaos&lt;br /&gt;
| align=&amp;quot;right&amp;quot; style=&amp;quot;background-color:#FFCECE;&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;Noklab&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;13 Aug - 17 Aug&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;&amp;quot; | [[Camp2015]]&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;Ziegeleipark Mildenberg&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | &#039;&#039;&#039;27 Dec - 30 Dec&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;padding-left:1em;&amp;quot; | 32C3&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | &amp;lt;small&amp;gt;&#039;&#039;&#039;Hamburg&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9866</id>
		<title>Freifunk/Flashscript</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9866"/>
		<updated>2015-06-18T20:22:14Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* 2. Flash-Aktion für Ruch mit Keys für Hildesheim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# FIRMWARE=&amp;quot;gluon-ffhi-0.4-experimental-20150328-tp-link-tl-wr1043n-nd-v2.bin&amp;quot;&lt;br /&gt;
# FIRMWARE=gluon-ffhi-wr1043.bin&lt;br /&gt;
FIRMWARE=gluon-ffgoe-0.6.5-tp-link-tl-wr1043n-nd-v2.bin&lt;br /&gt;
&lt;br /&gt;
# NAME=ccc-geismar-land&lt;br /&gt;
# LAENGE=9.949756264686584&lt;br /&gt;
# BREITE=51.52233597559833&lt;br /&gt;
# CONTACT=&amp;quot;freifunk@example.com&amp;quot;&lt;br /&gt;
BREITE=$1&lt;br /&gt;
LAENGE=$2&lt;br /&gt;
NAME=$3&lt;br /&gt;
&lt;br /&gt;
configure_gluon()&lt;br /&gt;
{&lt;br /&gt;
   curl &#039;http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
   -H &#039;Accept-Encoding: gzip, deflate&#039; \&lt;br /&gt;
   -H &#039;Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4&#039; \&lt;br /&gt;
   -H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36&#039; \&lt;br /&gt;
   -H &#039;Content-Type: multipart/form-data; boundary=----ffgoe-4711&#039; \&lt;br /&gt;
   -H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8&#039; \&lt;br /&gt;
   -H &#039;Cache-Control: max-age=0&#039; \&lt;br /&gt;
   -H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
   --compressed \&lt;br /&gt;
   --data-binary \&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.submit&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._hostname&amp;quot;\r\n\r\n&#039;&amp;quot;$NAME&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._limit_enabled&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._latitude&amp;quot;\r\n\r\n&#039;&amp;quot;$BREITE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._longitude&amp;quot;\r\n\r\n&#039;&amp;quot;$LAENGE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._contact&amp;quot;\r\n\r\n&#039;&amp;quot;$CONTACT&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711--\r\n&#039;&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl -v &#039;http://192.168.1.1/cgi-bin/luci/gluon-config-mode/reboot&#039; \&lt;br /&gt;
-H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
-H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
-H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&#039; \&lt;br /&gt;
-H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.6.3 (KHTML, like Gecko) Version/8.0.6 Safari/600.6.3&#039; \&lt;br /&gt;
-H &#039;Accept-Language: en-us&#039; \&lt;br /&gt;
-H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
-H &#039;Accept-Encoding: gzip, deflate&#039;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
flash_firmware()&lt;br /&gt;
{&lt;br /&gt;
   curl \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/userRpm/SoftwareUpgradeRpm.htm&#039; \&lt;br /&gt;
   --form &amp;quot;Filename=@$FIRMWARE&amp;quot; -F &#039;Upgrade=Upgrade&#039; \&lt;br /&gt;
   http://192.168.0.1/incoming/Firmware.htm&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl \&lt;br /&gt;
   --max-time 2 \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/incoming/Firmware.htm&#039; \&lt;br /&gt;
   http://192.168.0.1/userRpm/FirmwareUpdateTemp.htm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
wait_for_ping ()&lt;br /&gt;
{&lt;br /&gt;
   ip=$1&lt;br /&gt;
   echo -n &amp;quot;ping $ip &amp;quot;&lt;br /&gt;
   while true; do&lt;br /&gt;
      echo -n &amp;quot;.&amp;quot;&lt;br /&gt;
      ping -c 1 -W 5 $ip &amp;gt;/dev/null&lt;br /&gt;
      if test &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot;; then&lt;br /&gt;
         echo&lt;br /&gt;
         echo Es pingt.&lt;br /&gt;
         return&lt;br /&gt;
      fi&lt;br /&gt;
      sleep 3&lt;br /&gt;
   done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Happy Flashing fuer &#039;$NAME&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo Warten auf TP-Link &lt;br /&gt;
wait_for_ping 192.168.0.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Sende Firmware&lt;br /&gt;
flash_firmware&lt;br /&gt;
&lt;br /&gt;
echo Warten auf Gluon &lt;br /&gt;
wait_for_ping 192.168.1.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Konfiguriere Gluon&lt;br /&gt;
configure_gluon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
while (&amp;lt;&amp;gt;)&lt;br /&gt;
{&lt;br /&gt;
        ($x,$x,$x,$b,$l,$n) = split /;/;&lt;br /&gt;
        printf &amp;quot;./flash.sh %-20s %-20s %20s&amp;quot;, $b, $l, $n;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Goettingen:&lt;br /&gt;
./flash.sh 51.502538568153156   9.902989268302917    Feinbaeckerei_Ruch_59&lt;br /&gt;
./flash.sh 51.52715549198952    9.91589069366455     Feinbaeckerei_Ruch_04&lt;br /&gt;
./flash.sh 51.53313912617003    9.934709072113037    Feinbaeckerei_Ruch_05&lt;br /&gt;
./flash.sh 51.527349063016814   9.950051307678223    Feinbaeckerei_Ruch_06&lt;br /&gt;
./flash.sh 51.53687307599091    9.926013350486755    Feinbaeckerei_Ruch_07&lt;br /&gt;
./flash.sh 51.529912132818495   9.945834875106812    Feinbaeckerei_Ruch_08&lt;br /&gt;
./flash.sh 51.54530420220255    9.930176138877867    Feinbaeckerei_Ruch_09&lt;br /&gt;
./flash.sh 51.53183100338405    9.934076070785522    Feinbaeckerei_Ruch_10&lt;br /&gt;
./flash.sh 51.51381713409578    9.955029487609863    Feinbaeckerei_Ruch_11&lt;br /&gt;
./flash.sh 51.512354884322896   9.955925345420837    Feinbaeckerei_Ruch_12&lt;br /&gt;
./flash.sh 51.54207807128854    9.914828538894653    Feinbaeckerei_Ruch_13&lt;br /&gt;
./flash.sh 51.53039602954396    9.938222765922546    Feinbaeckerei_Ruch_14&lt;br /&gt;
./flash.sh 51.531841014670526   9.937530755996704    Feinbaeckerei_Ruch_15&lt;br /&gt;
./flash.sh 51.53962579189816    9.94264841079712     Feinbaeckerei_Ruch_16&lt;br /&gt;
./flash.sh 51.542595201771135   9.949799180030823    Feinbaeckerei_Ruch_17&lt;br /&gt;
./flash.sh 51.51515248101072    9.94013249874115     Feinbaeckerei_Ruch_18&lt;br /&gt;
./flash.sh 51.528887589675044   9.926066994667051    Feinbaeckerei_Ruch_19&lt;br /&gt;
./flash.sh 51.53467078339061    9.936929941177368    Feinbaeckerei_Ruch_20&lt;br /&gt;
./flash.sh 51.57874306327084    9.759174585342407    Feinbaeckerei_Ruch_21&lt;br /&gt;
./flash.sh 51.58850629232994    9.927461743354797    Feinbaeckerei_Ruch_22&lt;br /&gt;
./flash.sh 51.50285579510823    9.765300750732422    Feinbaeckerei_Ruch_23&lt;br /&gt;
./flash.sh 51.50255526436374    9.761003851890564    Feinbaeckerei_Ruch_24&lt;br /&gt;
./flash.sh 51.51246839397649    10.25948703289032    Feinbaeckerei_Ruch_25&lt;br /&gt;
./flash.sh 51.508946124423126   10.255286693572998   Feinbaeckerei_Ruch_26&lt;br /&gt;
./flash.sh 51.78783373327458    10.062666535377502   Feinbaeckerei_Ruch_27&lt;br /&gt;
./flash.sh 51.82073590612012    9.872143864631653    Feinbaeckerei_Ruch_28&lt;br /&gt;
./flash.sh 51.81830862006357    9.865947961807251    Feinbaeckerei_Ruch_29&lt;br /&gt;
./flash.sh 51.55195257991039    9.871907830238342    Feinbaeckerei_Ruch_30&lt;br /&gt;
./flash.sh 51.431898980502545   9.64473009109497     Feinbaeckerei_Ruch_33&lt;br /&gt;
./flash.sh 51.41698044851287    9.651864767074585    Feinbaeckerei_Ruch_34&lt;br /&gt;
./flash.sh 51.417833545176194   9.651778936386108    Feinbaeckerei_Ruch_35&lt;br /&gt;
./flash.sh 51.41101167200516    9.643405079841614    Feinbaeckerei_Ruch_36&lt;br /&gt;
./flash.sh 51.64851618597645    9.835386872291563    Feinbaeckerei_Ruch_37&lt;br /&gt;
./flash.sh 51.857828585762874   9.9593585729599      Feinbaeckerei_Ruch_53&lt;br /&gt;
./flash.sh 51.70541835968561    9.999339580535889    Feinbaeckerei_Ruch_54&lt;br /&gt;
./flash.sh 51.70633254826029    9.991545081138609    Feinbaeckerei_Ruch_55&lt;br /&gt;
./flash.sh 51.69041970568905    9.983407258987425    Feinbaeckerei_Ruch_56&lt;br /&gt;
./flash.sh 51.63002240144565    9.9363774061203      Feinbaeckerei_Ruch_57&lt;br /&gt;
&lt;br /&gt;
# Hildesheim:&lt;br /&gt;
./flash.sh 52.148958258516465   9.937713146209717    Feinbaeckerei_Ruch_38&lt;br /&gt;
./flash.sh 52.151048416345176   9.973622560501099    Feinbaeckerei_Ruch_39&lt;br /&gt;
./flash.sh 52.154063337297565   9.955195784568787    Feinbaeckerei_Ruch_40&lt;br /&gt;
./flash.sh 52.15090688119581    9.93088960647583     Feinbaeckerei_Ruch_41&lt;br /&gt;
./flash.sh 52.13966492024524    9.939993023872375    Feinbaeckerei_Ruch_42&lt;br /&gt;
./flash.sh 52.15336557899155    9.950260519981384    Feinbaeckerei_Ruch_43&lt;br /&gt;
./flash.sh 52.159276430590616   9.940513372421265    Feinbaeckerei_Ruch_44&lt;br /&gt;
&lt;br /&gt;
# Kasseler Block:&lt;br /&gt;
# Fuldabrueck:&lt;br /&gt;
./flash.sh 51.27328643729277    9.501843452453613    Feinbaeckerei_Ruch_31&lt;br /&gt;
# Harleshausen:&lt;br /&gt;
./flash.sh 51.33653057987049    9.438816905021667    Feinbaeckerei_Ruch_32&lt;br /&gt;
# Hofgeismar:&lt;br /&gt;
./flash.sh 51.494199716235535   9.381396174430847    Feinbaeckerei_Ruch_45&lt;br /&gt;
# Kassel&lt;br /&gt;
./flash.sh 51.289704482241135   9.471845626831055    Feinbaeckerei_Ruch_46&lt;br /&gt;
./flash.sh 51.29184815912083    9.45449709892273     Feinbaeckerei_Ruch_47&lt;br /&gt;
./flash.sh 51.316846975739736   9.496994018554688    Feinbaeckerei_Ruch_48&lt;br /&gt;
./flash.sh 51.3145703464324     9.494735598564148    Feinbaeckerei_Ruch_49&lt;br /&gt;
./flash.sh 51.33396669250336    9.492627382278442    Feinbaeckerei_Ruch_50&lt;br /&gt;
./flash.sh 51.31794333864989    9.49968695640564     Feinbaeckerei_Ruch_51&lt;br /&gt;
./flash.sh 51.313095003491476   9.445066452026367    Feinbaeckerei_Ruch_52&lt;br /&gt;
# Reinhardshagen&lt;br /&gt;
./flash.sh 51.489537041989      9.606696367263794    Feinbaeckerei_Ruch_58&lt;br /&gt;
# Vellmar&lt;br /&gt;
./flash.sh 51.36275442884671    9.468364119529724    Feinbaeckerei_Ruch_60&lt;br /&gt;
# Witzenhausen&lt;br /&gt;
./flash.sh 51.34131611932317    9.860449433326721    Feinbaeckerei_Ruch_61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Flash-Aktion für Ruch mit Keys für Kassel ===&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_49&lt;br /&gt;
 a66db04d6ea85f7394ab5df01bcdbf096726236d0c43059f82cf1d298b7a9782&lt;br /&gt;
 (schon per Email nach Kassel gegangen)&lt;br /&gt;
&lt;br /&gt;
=== 2. Flash-Aktion für Ruch mit Keys für Hildesheim ===&lt;br /&gt;
&lt;br /&gt;
(Die folgenden Keys sind am 18.6. an keys@freifunk-hi.de gegangen)&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_38&lt;br /&gt;
 f60190ec56f7c5f5a295d4c9f07a57251b41c572bb4f2461608cd68f053c6b5f&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_39&lt;br /&gt;
 0a758b5f34c45fa66b2760be23e040dce7e27a54920e09496699e11ca7786ec7&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_40&lt;br /&gt;
 6598c8e713a0fcdbca104feee06714194f2d9835d3dc0adcd19a6e3e80f7357c&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_41&lt;br /&gt;
 ac19164198e5a685836ad13b942c1e401eb1439e750ee79973e592c201f990cf&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_42&lt;br /&gt;
 efff191cdda02c73c2b87dbf6fc6b5bd2ddc95dcc59912203744625500138d53&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_43&lt;br /&gt;
 5533ea7cc26adc5d5f4a780d954dd97566808fa631740a47a62333e650392479&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_44&lt;br /&gt;
 c9851071540ea2e64399154abc38aed26fa88f8baa66ea1ee4491bab514bdf6c&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9865</id>
		<title>Freifunk/Flashscript</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9865"/>
		<updated>2015-06-18T20:11:38Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* 2. Flash-Aktion für Ruch mit Keys für Hildesheim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# FIRMWARE=&amp;quot;gluon-ffhi-0.4-experimental-20150328-tp-link-tl-wr1043n-nd-v2.bin&amp;quot;&lt;br /&gt;
# FIRMWARE=gluon-ffhi-wr1043.bin&lt;br /&gt;
FIRMWARE=gluon-ffgoe-0.6.5-tp-link-tl-wr1043n-nd-v2.bin&lt;br /&gt;
&lt;br /&gt;
# NAME=ccc-geismar-land&lt;br /&gt;
# LAENGE=9.949756264686584&lt;br /&gt;
# BREITE=51.52233597559833&lt;br /&gt;
# CONTACT=&amp;quot;freifunk@example.com&amp;quot;&lt;br /&gt;
BREITE=$1&lt;br /&gt;
LAENGE=$2&lt;br /&gt;
NAME=$3&lt;br /&gt;
&lt;br /&gt;
configure_gluon()&lt;br /&gt;
{&lt;br /&gt;
   curl &#039;http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
   -H &#039;Accept-Encoding: gzip, deflate&#039; \&lt;br /&gt;
   -H &#039;Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4&#039; \&lt;br /&gt;
   -H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36&#039; \&lt;br /&gt;
   -H &#039;Content-Type: multipart/form-data; boundary=----ffgoe-4711&#039; \&lt;br /&gt;
   -H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8&#039; \&lt;br /&gt;
   -H &#039;Cache-Control: max-age=0&#039; \&lt;br /&gt;
   -H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
   --compressed \&lt;br /&gt;
   --data-binary \&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.submit&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._hostname&amp;quot;\r\n\r\n&#039;&amp;quot;$NAME&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._limit_enabled&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._latitude&amp;quot;\r\n\r\n&#039;&amp;quot;$BREITE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._longitude&amp;quot;\r\n\r\n&#039;&amp;quot;$LAENGE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._contact&amp;quot;\r\n\r\n&#039;&amp;quot;$CONTACT&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711--\r\n&#039;&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl -v &#039;http://192.168.1.1/cgi-bin/luci/gluon-config-mode/reboot&#039; \&lt;br /&gt;
-H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
-H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
-H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&#039; \&lt;br /&gt;
-H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.6.3 (KHTML, like Gecko) Version/8.0.6 Safari/600.6.3&#039; \&lt;br /&gt;
-H &#039;Accept-Language: en-us&#039; \&lt;br /&gt;
-H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
-H &#039;Accept-Encoding: gzip, deflate&#039;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
flash_firmware()&lt;br /&gt;
{&lt;br /&gt;
   curl \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/userRpm/SoftwareUpgradeRpm.htm&#039; \&lt;br /&gt;
   --form &amp;quot;Filename=@$FIRMWARE&amp;quot; -F &#039;Upgrade=Upgrade&#039; \&lt;br /&gt;
   http://192.168.0.1/incoming/Firmware.htm&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl \&lt;br /&gt;
   --max-time 2 \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/incoming/Firmware.htm&#039; \&lt;br /&gt;
   http://192.168.0.1/userRpm/FirmwareUpdateTemp.htm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
wait_for_ping ()&lt;br /&gt;
{&lt;br /&gt;
   ip=$1&lt;br /&gt;
   echo -n &amp;quot;ping $ip &amp;quot;&lt;br /&gt;
   while true; do&lt;br /&gt;
      echo -n &amp;quot;.&amp;quot;&lt;br /&gt;
      ping -c 1 -W 5 $ip &amp;gt;/dev/null&lt;br /&gt;
      if test &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot;; then&lt;br /&gt;
         echo&lt;br /&gt;
         echo Es pingt.&lt;br /&gt;
         return&lt;br /&gt;
      fi&lt;br /&gt;
      sleep 3&lt;br /&gt;
   done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Happy Flashing fuer &#039;$NAME&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo Warten auf TP-Link &lt;br /&gt;
wait_for_ping 192.168.0.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Sende Firmware&lt;br /&gt;
flash_firmware&lt;br /&gt;
&lt;br /&gt;
echo Warten auf Gluon &lt;br /&gt;
wait_for_ping 192.168.1.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Konfiguriere Gluon&lt;br /&gt;
configure_gluon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
while (&amp;lt;&amp;gt;)&lt;br /&gt;
{&lt;br /&gt;
        ($x,$x,$x,$b,$l,$n) = split /;/;&lt;br /&gt;
        printf &amp;quot;./flash.sh %-20s %-20s %20s&amp;quot;, $b, $l, $n;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Goettingen:&lt;br /&gt;
./flash.sh 51.502538568153156   9.902989268302917    Feinbaeckerei_Ruch_59&lt;br /&gt;
./flash.sh 51.52715549198952    9.91589069366455     Feinbaeckerei_Ruch_04&lt;br /&gt;
./flash.sh 51.53313912617003    9.934709072113037    Feinbaeckerei_Ruch_05&lt;br /&gt;
./flash.sh 51.527349063016814   9.950051307678223    Feinbaeckerei_Ruch_06&lt;br /&gt;
./flash.sh 51.53687307599091    9.926013350486755    Feinbaeckerei_Ruch_07&lt;br /&gt;
./flash.sh 51.529912132818495   9.945834875106812    Feinbaeckerei_Ruch_08&lt;br /&gt;
./flash.sh 51.54530420220255    9.930176138877867    Feinbaeckerei_Ruch_09&lt;br /&gt;
./flash.sh 51.53183100338405    9.934076070785522    Feinbaeckerei_Ruch_10&lt;br /&gt;
./flash.sh 51.51381713409578    9.955029487609863    Feinbaeckerei_Ruch_11&lt;br /&gt;
./flash.sh 51.512354884322896   9.955925345420837    Feinbaeckerei_Ruch_12&lt;br /&gt;
./flash.sh 51.54207807128854    9.914828538894653    Feinbaeckerei_Ruch_13&lt;br /&gt;
./flash.sh 51.53039602954396    9.938222765922546    Feinbaeckerei_Ruch_14&lt;br /&gt;
./flash.sh 51.531841014670526   9.937530755996704    Feinbaeckerei_Ruch_15&lt;br /&gt;
./flash.sh 51.53962579189816    9.94264841079712     Feinbaeckerei_Ruch_16&lt;br /&gt;
./flash.sh 51.542595201771135   9.949799180030823    Feinbaeckerei_Ruch_17&lt;br /&gt;
./flash.sh 51.51515248101072    9.94013249874115     Feinbaeckerei_Ruch_18&lt;br /&gt;
./flash.sh 51.528887589675044   9.926066994667051    Feinbaeckerei_Ruch_19&lt;br /&gt;
./flash.sh 51.53467078339061    9.936929941177368    Feinbaeckerei_Ruch_20&lt;br /&gt;
./flash.sh 51.57874306327084    9.759174585342407    Feinbaeckerei_Ruch_21&lt;br /&gt;
./flash.sh 51.58850629232994    9.927461743354797    Feinbaeckerei_Ruch_22&lt;br /&gt;
./flash.sh 51.50285579510823    9.765300750732422    Feinbaeckerei_Ruch_23&lt;br /&gt;
./flash.sh 51.50255526436374    9.761003851890564    Feinbaeckerei_Ruch_24&lt;br /&gt;
./flash.sh 51.51246839397649    10.25948703289032    Feinbaeckerei_Ruch_25&lt;br /&gt;
./flash.sh 51.508946124423126   10.255286693572998   Feinbaeckerei_Ruch_26&lt;br /&gt;
./flash.sh 51.78783373327458    10.062666535377502   Feinbaeckerei_Ruch_27&lt;br /&gt;
./flash.sh 51.82073590612012    9.872143864631653    Feinbaeckerei_Ruch_28&lt;br /&gt;
./flash.sh 51.81830862006357    9.865947961807251    Feinbaeckerei_Ruch_29&lt;br /&gt;
./flash.sh 51.55195257991039    9.871907830238342    Feinbaeckerei_Ruch_30&lt;br /&gt;
./flash.sh 51.431898980502545   9.64473009109497     Feinbaeckerei_Ruch_33&lt;br /&gt;
./flash.sh 51.41698044851287    9.651864767074585    Feinbaeckerei_Ruch_34&lt;br /&gt;
./flash.sh 51.417833545176194   9.651778936386108    Feinbaeckerei_Ruch_35&lt;br /&gt;
./flash.sh 51.41101167200516    9.643405079841614    Feinbaeckerei_Ruch_36&lt;br /&gt;
./flash.sh 51.64851618597645    9.835386872291563    Feinbaeckerei_Ruch_37&lt;br /&gt;
./flash.sh 51.857828585762874   9.9593585729599      Feinbaeckerei_Ruch_53&lt;br /&gt;
./flash.sh 51.70541835968561    9.999339580535889    Feinbaeckerei_Ruch_54&lt;br /&gt;
./flash.sh 51.70633254826029    9.991545081138609    Feinbaeckerei_Ruch_55&lt;br /&gt;
./flash.sh 51.69041970568905    9.983407258987425    Feinbaeckerei_Ruch_56&lt;br /&gt;
./flash.sh 51.63002240144565    9.9363774061203      Feinbaeckerei_Ruch_57&lt;br /&gt;
&lt;br /&gt;
# Hildesheim:&lt;br /&gt;
./flash.sh 52.148958258516465   9.937713146209717    Feinbaeckerei_Ruch_38&lt;br /&gt;
./flash.sh 52.151048416345176   9.973622560501099    Feinbaeckerei_Ruch_39&lt;br /&gt;
./flash.sh 52.154063337297565   9.955195784568787    Feinbaeckerei_Ruch_40&lt;br /&gt;
./flash.sh 52.15090688119581    9.93088960647583     Feinbaeckerei_Ruch_41&lt;br /&gt;
./flash.sh 52.13966492024524    9.939993023872375    Feinbaeckerei_Ruch_42&lt;br /&gt;
./flash.sh 52.15336557899155    9.950260519981384    Feinbaeckerei_Ruch_43&lt;br /&gt;
./flash.sh 52.159276430590616   9.940513372421265    Feinbaeckerei_Ruch_44&lt;br /&gt;
&lt;br /&gt;
# Kasseler Block:&lt;br /&gt;
# Fuldabrueck:&lt;br /&gt;
./flash.sh 51.27328643729277    9.501843452453613    Feinbaeckerei_Ruch_31&lt;br /&gt;
# Harleshausen:&lt;br /&gt;
./flash.sh 51.33653057987049    9.438816905021667    Feinbaeckerei_Ruch_32&lt;br /&gt;
# Hofgeismar:&lt;br /&gt;
./flash.sh 51.494199716235535   9.381396174430847    Feinbaeckerei_Ruch_45&lt;br /&gt;
# Kassel&lt;br /&gt;
./flash.sh 51.289704482241135   9.471845626831055    Feinbaeckerei_Ruch_46&lt;br /&gt;
./flash.sh 51.29184815912083    9.45449709892273     Feinbaeckerei_Ruch_47&lt;br /&gt;
./flash.sh 51.316846975739736   9.496994018554688    Feinbaeckerei_Ruch_48&lt;br /&gt;
./flash.sh 51.3145703464324     9.494735598564148    Feinbaeckerei_Ruch_49&lt;br /&gt;
./flash.sh 51.33396669250336    9.492627382278442    Feinbaeckerei_Ruch_50&lt;br /&gt;
./flash.sh 51.31794333864989    9.49968695640564     Feinbaeckerei_Ruch_51&lt;br /&gt;
./flash.sh 51.313095003491476   9.445066452026367    Feinbaeckerei_Ruch_52&lt;br /&gt;
# Reinhardshagen&lt;br /&gt;
./flash.sh 51.489537041989      9.606696367263794    Feinbaeckerei_Ruch_58&lt;br /&gt;
# Vellmar&lt;br /&gt;
./flash.sh 51.36275442884671    9.468364119529724    Feinbaeckerei_Ruch_60&lt;br /&gt;
# Witzenhausen&lt;br /&gt;
./flash.sh 51.34131611932317    9.860449433326721    Feinbaeckerei_Ruch_61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Flash-Aktion für Ruch mit Keys für Kassel ===&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_49&lt;br /&gt;
 a66db04d6ea85f7394ab5df01bcdbf096726236d0c43059f82cf1d298b7a9782&lt;br /&gt;
 (schon per Email nach Kassel gegangen)&lt;br /&gt;
&lt;br /&gt;
=== 2. Flash-Aktion für Ruch mit Keys für Hildesheim ===&lt;br /&gt;
&lt;br /&gt;
(muss alles noch an keys@freifunk-hi.de versendet werden)&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_38&lt;br /&gt;
 f60190ec56f7c5f5a295d4c9f07a57251b41c572bb4f2461608cd68f053c6b5f&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_39&lt;br /&gt;
 0a758b5f34c45fa66b2760be23e040dce7e27a54920e09496699e11ca7786ec7&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_40&lt;br /&gt;
 6598c8e713a0fcdbca104feee06714194f2d9835d3dc0adcd19a6e3e80f7357c&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_41&lt;br /&gt;
 ac19164198e5a685836ad13b942c1e401eb1439e750ee79973e592c201f990cf&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_42&lt;br /&gt;
 efff191cdda02c73c2b87dbf6fc6b5bd2ddc95dcc59912203744625500138d53&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_43&lt;br /&gt;
 5533ea7cc26adc5d5f4a780d954dd97566808fa631740a47a62333e650392479&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_44&lt;br /&gt;
 c9851071540ea2e64399154abc38aed26fa88f8baa66ea1ee4491bab514bdf6c&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9863</id>
		<title>Freifunk/Flashscript</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9863"/>
		<updated>2015-06-18T19:59:36Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* 2. Flash-Aktion für Ruch mit Keys für Hildesheim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# FIRMWARE=&amp;quot;gluon-ffhi-0.4-experimental-20150328-tp-link-tl-wr1043n-nd-v2.bin&amp;quot;&lt;br /&gt;
# FIRMWARE=gluon-ffhi-wr1043.bin&lt;br /&gt;
FIRMWARE=gluon-ffgoe-0.6.5-tp-link-tl-wr1043n-nd-v2.bin&lt;br /&gt;
&lt;br /&gt;
# NAME=ccc-geismar-land&lt;br /&gt;
# LAENGE=9.949756264686584&lt;br /&gt;
# BREITE=51.52233597559833&lt;br /&gt;
# CONTACT=&amp;quot;freifunk@example.com&amp;quot;&lt;br /&gt;
BREITE=$1&lt;br /&gt;
LAENGE=$2&lt;br /&gt;
NAME=$3&lt;br /&gt;
&lt;br /&gt;
configure_gluon()&lt;br /&gt;
{&lt;br /&gt;
   curl &#039;http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
   -H &#039;Accept-Encoding: gzip, deflate&#039; \&lt;br /&gt;
   -H &#039;Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4&#039; \&lt;br /&gt;
   -H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36&#039; \&lt;br /&gt;
   -H &#039;Content-Type: multipart/form-data; boundary=----ffgoe-4711&#039; \&lt;br /&gt;
   -H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8&#039; \&lt;br /&gt;
   -H &#039;Cache-Control: max-age=0&#039; \&lt;br /&gt;
   -H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
   --compressed \&lt;br /&gt;
   --data-binary \&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.submit&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._hostname&amp;quot;\r\n\r\n&#039;&amp;quot;$NAME&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._limit_enabled&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._latitude&amp;quot;\r\n\r\n&#039;&amp;quot;$BREITE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._longitude&amp;quot;\r\n\r\n&#039;&amp;quot;$LAENGE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._contact&amp;quot;\r\n\r\n&#039;&amp;quot;$CONTACT&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711--\r\n&#039;&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl -v &#039;http://192.168.1.1/cgi-bin/luci/gluon-config-mode/reboot&#039; \&lt;br /&gt;
-H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
-H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
-H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&#039; \&lt;br /&gt;
-H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.6.3 (KHTML, like Gecko) Version/8.0.6 Safari/600.6.3&#039; \&lt;br /&gt;
-H &#039;Accept-Language: en-us&#039; \&lt;br /&gt;
-H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
-H &#039;Accept-Encoding: gzip, deflate&#039;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
flash_firmware()&lt;br /&gt;
{&lt;br /&gt;
   curl \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/userRpm/SoftwareUpgradeRpm.htm&#039; \&lt;br /&gt;
   --form &amp;quot;Filename=@$FIRMWARE&amp;quot; -F &#039;Upgrade=Upgrade&#039; \&lt;br /&gt;
   http://192.168.0.1/incoming/Firmware.htm&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl \&lt;br /&gt;
   --max-time 2 \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/incoming/Firmware.htm&#039; \&lt;br /&gt;
   http://192.168.0.1/userRpm/FirmwareUpdateTemp.htm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
wait_for_ping ()&lt;br /&gt;
{&lt;br /&gt;
   ip=$1&lt;br /&gt;
   echo -n &amp;quot;ping $ip &amp;quot;&lt;br /&gt;
   while true; do&lt;br /&gt;
      echo -n &amp;quot;.&amp;quot;&lt;br /&gt;
      ping -c 1 -W 5 $ip &amp;gt;/dev/null&lt;br /&gt;
      if test &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot;; then&lt;br /&gt;
         echo&lt;br /&gt;
         echo Es pingt.&lt;br /&gt;
         return&lt;br /&gt;
      fi&lt;br /&gt;
      sleep 3&lt;br /&gt;
   done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Happy Flashing fuer &#039;$NAME&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo Warten auf TP-Link &lt;br /&gt;
wait_for_ping 192.168.0.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Sende Firmware&lt;br /&gt;
flash_firmware&lt;br /&gt;
&lt;br /&gt;
echo Warten auf Gluon &lt;br /&gt;
wait_for_ping 192.168.1.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Konfiguriere Gluon&lt;br /&gt;
configure_gluon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
while (&amp;lt;&amp;gt;)&lt;br /&gt;
{&lt;br /&gt;
        ($x,$x,$x,$b,$l,$n) = split /;/;&lt;br /&gt;
        printf &amp;quot;./flash.sh %-20s %-20s %20s&amp;quot;, $b, $l, $n;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Goettingen:&lt;br /&gt;
./flash.sh 51.502538568153156   9.902989268302917    Feinbaeckerei_Ruch_59&lt;br /&gt;
./flash.sh 51.52715549198952    9.91589069366455     Feinbaeckerei_Ruch_04&lt;br /&gt;
./flash.sh 51.53313912617003    9.934709072113037    Feinbaeckerei_Ruch_05&lt;br /&gt;
./flash.sh 51.527349063016814   9.950051307678223    Feinbaeckerei_Ruch_06&lt;br /&gt;
./flash.sh 51.53687307599091    9.926013350486755    Feinbaeckerei_Ruch_07&lt;br /&gt;
./flash.sh 51.529912132818495   9.945834875106812    Feinbaeckerei_Ruch_08&lt;br /&gt;
./flash.sh 51.54530420220255    9.930176138877867    Feinbaeckerei_Ruch_09&lt;br /&gt;
./flash.sh 51.53183100338405    9.934076070785522    Feinbaeckerei_Ruch_10&lt;br /&gt;
./flash.sh 51.51381713409578    9.955029487609863    Feinbaeckerei_Ruch_11&lt;br /&gt;
./flash.sh 51.512354884322896   9.955925345420837    Feinbaeckerei_Ruch_12&lt;br /&gt;
./flash.sh 51.54207807128854    9.914828538894653    Feinbaeckerei_Ruch_13&lt;br /&gt;
./flash.sh 51.53039602954396    9.938222765922546    Feinbaeckerei_Ruch_14&lt;br /&gt;
./flash.sh 51.531841014670526   9.937530755996704    Feinbaeckerei_Ruch_15&lt;br /&gt;
./flash.sh 51.53962579189816    9.94264841079712     Feinbaeckerei_Ruch_16&lt;br /&gt;
./flash.sh 51.542595201771135   9.949799180030823    Feinbaeckerei_Ruch_17&lt;br /&gt;
./flash.sh 51.51515248101072    9.94013249874115     Feinbaeckerei_Ruch_18&lt;br /&gt;
./flash.sh 51.528887589675044   9.926066994667051    Feinbaeckerei_Ruch_19&lt;br /&gt;
./flash.sh 51.53467078339061    9.936929941177368    Feinbaeckerei_Ruch_20&lt;br /&gt;
./flash.sh 51.57874306327084    9.759174585342407    Feinbaeckerei_Ruch_21&lt;br /&gt;
./flash.sh 51.58850629232994    9.927461743354797    Feinbaeckerei_Ruch_22&lt;br /&gt;
./flash.sh 51.50285579510823    9.765300750732422    Feinbaeckerei_Ruch_23&lt;br /&gt;
./flash.sh 51.50255526436374    9.761003851890564    Feinbaeckerei_Ruch_24&lt;br /&gt;
./flash.sh 51.51246839397649    10.25948703289032    Feinbaeckerei_Ruch_25&lt;br /&gt;
./flash.sh 51.508946124423126   10.255286693572998   Feinbaeckerei_Ruch_26&lt;br /&gt;
./flash.sh 51.78783373327458    10.062666535377502   Feinbaeckerei_Ruch_27&lt;br /&gt;
./flash.sh 51.82073590612012    9.872143864631653    Feinbaeckerei_Ruch_28&lt;br /&gt;
./flash.sh 51.81830862006357    9.865947961807251    Feinbaeckerei_Ruch_29&lt;br /&gt;
./flash.sh 51.55195257991039    9.871907830238342    Feinbaeckerei_Ruch_30&lt;br /&gt;
./flash.sh 51.431898980502545   9.64473009109497     Feinbaeckerei_Ruch_33&lt;br /&gt;
./flash.sh 51.41698044851287    9.651864767074585    Feinbaeckerei_Ruch_34&lt;br /&gt;
./flash.sh 51.417833545176194   9.651778936386108    Feinbaeckerei_Ruch_35&lt;br /&gt;
./flash.sh 51.41101167200516    9.643405079841614    Feinbaeckerei_Ruch_36&lt;br /&gt;
./flash.sh 51.64851618597645    9.835386872291563    Feinbaeckerei_Ruch_37&lt;br /&gt;
./flash.sh 51.857828585762874   9.9593585729599      Feinbaeckerei_Ruch_53&lt;br /&gt;
./flash.sh 51.70541835968561    9.999339580535889    Feinbaeckerei_Ruch_54&lt;br /&gt;
./flash.sh 51.70633254826029    9.991545081138609    Feinbaeckerei_Ruch_55&lt;br /&gt;
./flash.sh 51.69041970568905    9.983407258987425    Feinbaeckerei_Ruch_56&lt;br /&gt;
./flash.sh 51.63002240144565    9.9363774061203      Feinbaeckerei_Ruch_57&lt;br /&gt;
&lt;br /&gt;
# Hildesheim:&lt;br /&gt;
./flash.sh 52.148958258516465   9.937713146209717    Feinbaeckerei_Ruch_38&lt;br /&gt;
./flash.sh 52.151048416345176   9.973622560501099    Feinbaeckerei_Ruch_39&lt;br /&gt;
./flash.sh 52.154063337297565   9.955195784568787    Feinbaeckerei_Ruch_40&lt;br /&gt;
./flash.sh 52.15090688119581    9.93088960647583     Feinbaeckerei_Ruch_41&lt;br /&gt;
./flash.sh 52.13966492024524    9.939993023872375    Feinbaeckerei_Ruch_42&lt;br /&gt;
./flash.sh 52.15336557899155    9.950260519981384    Feinbaeckerei_Ruch_43&lt;br /&gt;
./flash.sh 52.159276430590616   9.940513372421265    Feinbaeckerei_Ruch_44&lt;br /&gt;
&lt;br /&gt;
# Kasseler Block:&lt;br /&gt;
# Fuldabrueck:&lt;br /&gt;
./flash.sh 51.27328643729277    9.501843452453613    Feinbaeckerei_Ruch_31&lt;br /&gt;
# Harleshausen:&lt;br /&gt;
./flash.sh 51.33653057987049    9.438816905021667    Feinbaeckerei_Ruch_32&lt;br /&gt;
# Hofgeismar:&lt;br /&gt;
./flash.sh 51.494199716235535   9.381396174430847    Feinbaeckerei_Ruch_45&lt;br /&gt;
# Kassel&lt;br /&gt;
./flash.sh 51.289704482241135   9.471845626831055    Feinbaeckerei_Ruch_46&lt;br /&gt;
./flash.sh 51.29184815912083    9.45449709892273     Feinbaeckerei_Ruch_47&lt;br /&gt;
./flash.sh 51.316846975739736   9.496994018554688    Feinbaeckerei_Ruch_48&lt;br /&gt;
./flash.sh 51.3145703464324     9.494735598564148    Feinbaeckerei_Ruch_49&lt;br /&gt;
./flash.sh 51.33396669250336    9.492627382278442    Feinbaeckerei_Ruch_50&lt;br /&gt;
./flash.sh 51.31794333864989    9.49968695640564     Feinbaeckerei_Ruch_51&lt;br /&gt;
./flash.sh 51.313095003491476   9.445066452026367    Feinbaeckerei_Ruch_52&lt;br /&gt;
# Reinhardshagen&lt;br /&gt;
./flash.sh 51.489537041989      9.606696367263794    Feinbaeckerei_Ruch_58&lt;br /&gt;
# Vellmar&lt;br /&gt;
./flash.sh 51.36275442884671    9.468364119529724    Feinbaeckerei_Ruch_60&lt;br /&gt;
# Witzenhausen&lt;br /&gt;
./flash.sh 51.34131611932317    9.860449433326721    Feinbaeckerei_Ruch_61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Flash-Aktion für Ruch mit Keys für Kassel ===&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_49&lt;br /&gt;
 a66db04d6ea85f7394ab5df01bcdbf096726236d0c43059f82cf1d298b7a9782&lt;br /&gt;
 (schon per Email nach Kassel gegangen)&lt;br /&gt;
&lt;br /&gt;
=== 2. Flash-Aktion für Ruch mit Keys für Hildesheim ===&lt;br /&gt;
&lt;br /&gt;
(muss alles noch an keys@freifunk-hi.de versendet werden)&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_42&lt;br /&gt;
 efff191cdda02c73c2b87dbf6fc6b5bd2ddc95dcc59912203744625500138d53&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_38&lt;br /&gt;
 f60190ec56f7c5f5a295d4c9f07a57251b41c572bb4f2461608cd68f053c6b5f&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_39&lt;br /&gt;
 0a758b5f34c45fa66b2760be23e040dce7e27a54920e09496699e11ca7786ec7&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_41&lt;br /&gt;
 ac19164198e5a685836ad13b942c1e401eb1439e750ee79973e592c201f990cf&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_43&lt;br /&gt;
 5533ea7cc26adc5d5f4a780d954dd97566808fa631740a47a62333e650392479&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_40&lt;br /&gt;
 6598c8e713a0fcdbca104feee06714194f2d9835d3dc0adcd19a6e3e80f7357c&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9860</id>
		<title>Freifunk/Flashscript</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9860"/>
		<updated>2015-06-18T19:54:03Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* 2. Flash-Aktion für Ruch mit Keys für Hildesheim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# FIRMWARE=&amp;quot;gluon-ffhi-0.4-experimental-20150328-tp-link-tl-wr1043n-nd-v2.bin&amp;quot;&lt;br /&gt;
# FIRMWARE=gluon-ffhi-wr1043.bin&lt;br /&gt;
FIRMWARE=gluon-ffgoe-0.6.5-tp-link-tl-wr1043n-nd-v2.bin&lt;br /&gt;
&lt;br /&gt;
# NAME=ccc-geismar-land&lt;br /&gt;
# LAENGE=9.949756264686584&lt;br /&gt;
# BREITE=51.52233597559833&lt;br /&gt;
# CONTACT=&amp;quot;freifunk@example.com&amp;quot;&lt;br /&gt;
BREITE=$1&lt;br /&gt;
LAENGE=$2&lt;br /&gt;
NAME=$3&lt;br /&gt;
&lt;br /&gt;
configure_gluon()&lt;br /&gt;
{&lt;br /&gt;
   curl &#039;http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
   -H &#039;Accept-Encoding: gzip, deflate&#039; \&lt;br /&gt;
   -H &#039;Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4&#039; \&lt;br /&gt;
   -H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36&#039; \&lt;br /&gt;
   -H &#039;Content-Type: multipart/form-data; boundary=----ffgoe-4711&#039; \&lt;br /&gt;
   -H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8&#039; \&lt;br /&gt;
   -H &#039;Cache-Control: max-age=0&#039; \&lt;br /&gt;
   -H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
   --compressed \&lt;br /&gt;
   --data-binary \&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.submit&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._hostname&amp;quot;\r\n\r\n&#039;&amp;quot;$NAME&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._limit_enabled&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._latitude&amp;quot;\r\n\r\n&#039;&amp;quot;$BREITE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._longitude&amp;quot;\r\n\r\n&#039;&amp;quot;$LAENGE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._contact&amp;quot;\r\n\r\n&#039;&amp;quot;$CONTACT&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711--\r\n&#039;&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl -v &#039;http://192.168.1.1/cgi-bin/luci/gluon-config-mode/reboot&#039; \&lt;br /&gt;
-H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
-H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
-H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&#039; \&lt;br /&gt;
-H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.6.3 (KHTML, like Gecko) Version/8.0.6 Safari/600.6.3&#039; \&lt;br /&gt;
-H &#039;Accept-Language: en-us&#039; \&lt;br /&gt;
-H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
-H &#039;Accept-Encoding: gzip, deflate&#039;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
flash_firmware()&lt;br /&gt;
{&lt;br /&gt;
   curl \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/userRpm/SoftwareUpgradeRpm.htm&#039; \&lt;br /&gt;
   --form &amp;quot;Filename=@$FIRMWARE&amp;quot; -F &#039;Upgrade=Upgrade&#039; \&lt;br /&gt;
   http://192.168.0.1/incoming/Firmware.htm&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl \&lt;br /&gt;
   --max-time 2 \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/incoming/Firmware.htm&#039; \&lt;br /&gt;
   http://192.168.0.1/userRpm/FirmwareUpdateTemp.htm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
wait_for_ping ()&lt;br /&gt;
{&lt;br /&gt;
   ip=$1&lt;br /&gt;
   echo -n &amp;quot;ping $ip &amp;quot;&lt;br /&gt;
   while true; do&lt;br /&gt;
      echo -n &amp;quot;.&amp;quot;&lt;br /&gt;
      ping -c 1 -W 5 $ip &amp;gt;/dev/null&lt;br /&gt;
      if test &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot;; then&lt;br /&gt;
         echo&lt;br /&gt;
         echo Es pingt.&lt;br /&gt;
         return&lt;br /&gt;
      fi&lt;br /&gt;
      sleep 3&lt;br /&gt;
   done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Happy Flashing fuer &#039;$NAME&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo Warten auf TP-Link &lt;br /&gt;
wait_for_ping 192.168.0.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Sende Firmware&lt;br /&gt;
flash_firmware&lt;br /&gt;
&lt;br /&gt;
echo Warten auf Gluon &lt;br /&gt;
wait_for_ping 192.168.1.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Konfiguriere Gluon&lt;br /&gt;
configure_gluon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
while (&amp;lt;&amp;gt;)&lt;br /&gt;
{&lt;br /&gt;
        ($x,$x,$x,$b,$l,$n) = split /;/;&lt;br /&gt;
        printf &amp;quot;./flash.sh %-20s %-20s %20s&amp;quot;, $b, $l, $n;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Goettingen:&lt;br /&gt;
./flash.sh 51.502538568153156   9.902989268302917    Feinbaeckerei_Ruch_59&lt;br /&gt;
./flash.sh 51.52715549198952    9.91589069366455     Feinbaeckerei_Ruch_04&lt;br /&gt;
./flash.sh 51.53313912617003    9.934709072113037    Feinbaeckerei_Ruch_05&lt;br /&gt;
./flash.sh 51.527349063016814   9.950051307678223    Feinbaeckerei_Ruch_06&lt;br /&gt;
./flash.sh 51.53687307599091    9.926013350486755    Feinbaeckerei_Ruch_07&lt;br /&gt;
./flash.sh 51.529912132818495   9.945834875106812    Feinbaeckerei_Ruch_08&lt;br /&gt;
./flash.sh 51.54530420220255    9.930176138877867    Feinbaeckerei_Ruch_09&lt;br /&gt;
./flash.sh 51.53183100338405    9.934076070785522    Feinbaeckerei_Ruch_10&lt;br /&gt;
./flash.sh 51.51381713409578    9.955029487609863    Feinbaeckerei_Ruch_11&lt;br /&gt;
./flash.sh 51.512354884322896   9.955925345420837    Feinbaeckerei_Ruch_12&lt;br /&gt;
./flash.sh 51.54207807128854    9.914828538894653    Feinbaeckerei_Ruch_13&lt;br /&gt;
./flash.sh 51.53039602954396    9.938222765922546    Feinbaeckerei_Ruch_14&lt;br /&gt;
./flash.sh 51.531841014670526   9.937530755996704    Feinbaeckerei_Ruch_15&lt;br /&gt;
./flash.sh 51.53962579189816    9.94264841079712     Feinbaeckerei_Ruch_16&lt;br /&gt;
./flash.sh 51.542595201771135   9.949799180030823    Feinbaeckerei_Ruch_17&lt;br /&gt;
./flash.sh 51.51515248101072    9.94013249874115     Feinbaeckerei_Ruch_18&lt;br /&gt;
./flash.sh 51.528887589675044   9.926066994667051    Feinbaeckerei_Ruch_19&lt;br /&gt;
./flash.sh 51.53467078339061    9.936929941177368    Feinbaeckerei_Ruch_20&lt;br /&gt;
./flash.sh 51.57874306327084    9.759174585342407    Feinbaeckerei_Ruch_21&lt;br /&gt;
./flash.sh 51.58850629232994    9.927461743354797    Feinbaeckerei_Ruch_22&lt;br /&gt;
./flash.sh 51.50285579510823    9.765300750732422    Feinbaeckerei_Ruch_23&lt;br /&gt;
./flash.sh 51.50255526436374    9.761003851890564    Feinbaeckerei_Ruch_24&lt;br /&gt;
./flash.sh 51.51246839397649    10.25948703289032    Feinbaeckerei_Ruch_25&lt;br /&gt;
./flash.sh 51.508946124423126   10.255286693572998   Feinbaeckerei_Ruch_26&lt;br /&gt;
./flash.sh 51.78783373327458    10.062666535377502   Feinbaeckerei_Ruch_27&lt;br /&gt;
./flash.sh 51.82073590612012    9.872143864631653    Feinbaeckerei_Ruch_28&lt;br /&gt;
./flash.sh 51.81830862006357    9.865947961807251    Feinbaeckerei_Ruch_29&lt;br /&gt;
./flash.sh 51.55195257991039    9.871907830238342    Feinbaeckerei_Ruch_30&lt;br /&gt;
./flash.sh 51.431898980502545   9.64473009109497     Feinbaeckerei_Ruch_33&lt;br /&gt;
./flash.sh 51.41698044851287    9.651864767074585    Feinbaeckerei_Ruch_34&lt;br /&gt;
./flash.sh 51.417833545176194   9.651778936386108    Feinbaeckerei_Ruch_35&lt;br /&gt;
./flash.sh 51.41101167200516    9.643405079841614    Feinbaeckerei_Ruch_36&lt;br /&gt;
./flash.sh 51.64851618597645    9.835386872291563    Feinbaeckerei_Ruch_37&lt;br /&gt;
./flash.sh 51.857828585762874   9.9593585729599      Feinbaeckerei_Ruch_53&lt;br /&gt;
./flash.sh 51.70541835968561    9.999339580535889    Feinbaeckerei_Ruch_54&lt;br /&gt;
./flash.sh 51.70633254826029    9.991545081138609    Feinbaeckerei_Ruch_55&lt;br /&gt;
./flash.sh 51.69041970568905    9.983407258987425    Feinbaeckerei_Ruch_56&lt;br /&gt;
./flash.sh 51.63002240144565    9.9363774061203      Feinbaeckerei_Ruch_57&lt;br /&gt;
&lt;br /&gt;
# Hildesheim:&lt;br /&gt;
./flash.sh 52.148958258516465   9.937713146209717    Feinbaeckerei_Ruch_38&lt;br /&gt;
./flash.sh 52.151048416345176   9.973622560501099    Feinbaeckerei_Ruch_39&lt;br /&gt;
./flash.sh 52.154063337297565   9.955195784568787    Feinbaeckerei_Ruch_40&lt;br /&gt;
./flash.sh 52.15090688119581    9.93088960647583     Feinbaeckerei_Ruch_41&lt;br /&gt;
./flash.sh 52.13966492024524    9.939993023872375    Feinbaeckerei_Ruch_42&lt;br /&gt;
./flash.sh 52.15336557899155    9.950260519981384    Feinbaeckerei_Ruch_43&lt;br /&gt;
./flash.sh 52.159276430590616   9.940513372421265    Feinbaeckerei_Ruch_44&lt;br /&gt;
&lt;br /&gt;
# Kasseler Block:&lt;br /&gt;
# Fuldabrueck:&lt;br /&gt;
./flash.sh 51.27328643729277    9.501843452453613    Feinbaeckerei_Ruch_31&lt;br /&gt;
# Harleshausen:&lt;br /&gt;
./flash.sh 51.33653057987049    9.438816905021667    Feinbaeckerei_Ruch_32&lt;br /&gt;
# Hofgeismar:&lt;br /&gt;
./flash.sh 51.494199716235535   9.381396174430847    Feinbaeckerei_Ruch_45&lt;br /&gt;
# Kassel&lt;br /&gt;
./flash.sh 51.289704482241135   9.471845626831055    Feinbaeckerei_Ruch_46&lt;br /&gt;
./flash.sh 51.29184815912083    9.45449709892273     Feinbaeckerei_Ruch_47&lt;br /&gt;
./flash.sh 51.316846975739736   9.496994018554688    Feinbaeckerei_Ruch_48&lt;br /&gt;
./flash.sh 51.3145703464324     9.494735598564148    Feinbaeckerei_Ruch_49&lt;br /&gt;
./flash.sh 51.33396669250336    9.492627382278442    Feinbaeckerei_Ruch_50&lt;br /&gt;
./flash.sh 51.31794333864989    9.49968695640564     Feinbaeckerei_Ruch_51&lt;br /&gt;
./flash.sh 51.313095003491476   9.445066452026367    Feinbaeckerei_Ruch_52&lt;br /&gt;
# Reinhardshagen&lt;br /&gt;
./flash.sh 51.489537041989      9.606696367263794    Feinbaeckerei_Ruch_58&lt;br /&gt;
# Vellmar&lt;br /&gt;
./flash.sh 51.36275442884671    9.468364119529724    Feinbaeckerei_Ruch_60&lt;br /&gt;
# Witzenhausen&lt;br /&gt;
./flash.sh 51.34131611932317    9.860449433326721    Feinbaeckerei_Ruch_61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Flash-Aktion für Ruch mit Keys für Kassel ===&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_49&lt;br /&gt;
 a66db04d6ea85f7394ab5df01bcdbf096726236d0c43059f82cf1d298b7a9782&lt;br /&gt;
 (schon per Email nach Kassel gegangen)&lt;br /&gt;
&lt;br /&gt;
=== 2. Flash-Aktion für Ruch mit Keys für Hildesheim ===&lt;br /&gt;
&lt;br /&gt;
(muss alles noch an keys@freifunk-hi.de versendet werden)&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_42&lt;br /&gt;
 efff191cdda02c73c2b87dbf6fc6b5bd2ddc95dcc59912203744625500138d53&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_38&lt;br /&gt;
 f60190ec56f7c5f5a295d4c9f07a57251b41c572bb4f2461608cd68f053c6b5f&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_39&lt;br /&gt;
 0a758b5f34c45fa66b2760be23e040dce7e27a54920e09496699e11ca7786ec7&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_41&lt;br /&gt;
 ac19164198e5a685836ad13b942c1e401eb1439e750ee79973e592c201f990cf&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9857</id>
		<title>Freifunk/Flashscript</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9857"/>
		<updated>2015-06-18T19:39:33Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* 2. Flash-Aktion für Ruch mit Keys für Hildesheim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# FIRMWARE=&amp;quot;gluon-ffhi-0.4-experimental-20150328-tp-link-tl-wr1043n-nd-v2.bin&amp;quot;&lt;br /&gt;
# FIRMWARE=gluon-ffhi-wr1043.bin&lt;br /&gt;
FIRMWARE=gluon-ffgoe-0.6.5-tp-link-tl-wr1043n-nd-v2.bin&lt;br /&gt;
&lt;br /&gt;
# NAME=ccc-geismar-land&lt;br /&gt;
# LAENGE=9.949756264686584&lt;br /&gt;
# BREITE=51.52233597559833&lt;br /&gt;
# CONTACT=&amp;quot;freifunk@example.com&amp;quot;&lt;br /&gt;
BREITE=$1&lt;br /&gt;
LAENGE=$2&lt;br /&gt;
NAME=$3&lt;br /&gt;
&lt;br /&gt;
configure_gluon()&lt;br /&gt;
{&lt;br /&gt;
   curl &#039;http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
   -H &#039;Accept-Encoding: gzip, deflate&#039; \&lt;br /&gt;
   -H &#039;Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4&#039; \&lt;br /&gt;
   -H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36&#039; \&lt;br /&gt;
   -H &#039;Content-Type: multipart/form-data; boundary=----ffgoe-4711&#039; \&lt;br /&gt;
   -H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8&#039; \&lt;br /&gt;
   -H &#039;Cache-Control: max-age=0&#039; \&lt;br /&gt;
   -H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
   --compressed \&lt;br /&gt;
   --data-binary \&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.submit&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._hostname&amp;quot;\r\n\r\n&#039;&amp;quot;$NAME&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._limit_enabled&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._latitude&amp;quot;\r\n\r\n&#039;&amp;quot;$BREITE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._longitude&amp;quot;\r\n\r\n&#039;&amp;quot;$LAENGE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._contact&amp;quot;\r\n\r\n&#039;&amp;quot;$CONTACT&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711--\r\n&#039;&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl -v &#039;http://192.168.1.1/cgi-bin/luci/gluon-config-mode/reboot&#039; \&lt;br /&gt;
-H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
-H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
-H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&#039; \&lt;br /&gt;
-H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.6.3 (KHTML, like Gecko) Version/8.0.6 Safari/600.6.3&#039; \&lt;br /&gt;
-H &#039;Accept-Language: en-us&#039; \&lt;br /&gt;
-H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
-H &#039;Accept-Encoding: gzip, deflate&#039;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
flash_firmware()&lt;br /&gt;
{&lt;br /&gt;
   curl \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/userRpm/SoftwareUpgradeRpm.htm&#039; \&lt;br /&gt;
   --form &amp;quot;Filename=@$FIRMWARE&amp;quot; -F &#039;Upgrade=Upgrade&#039; \&lt;br /&gt;
   http://192.168.0.1/incoming/Firmware.htm&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl \&lt;br /&gt;
   --max-time 2 \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/incoming/Firmware.htm&#039; \&lt;br /&gt;
   http://192.168.0.1/userRpm/FirmwareUpdateTemp.htm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
wait_for_ping ()&lt;br /&gt;
{&lt;br /&gt;
   ip=$1&lt;br /&gt;
   echo -n &amp;quot;ping $ip &amp;quot;&lt;br /&gt;
   while true; do&lt;br /&gt;
      echo -n &amp;quot;.&amp;quot;&lt;br /&gt;
      ping -c 1 -W 5 $ip &amp;gt;/dev/null&lt;br /&gt;
      if test &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot;; then&lt;br /&gt;
         echo&lt;br /&gt;
         echo Es pingt.&lt;br /&gt;
         return&lt;br /&gt;
      fi&lt;br /&gt;
      sleep 3&lt;br /&gt;
   done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Happy Flashing fuer &#039;$NAME&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo Warten auf TP-Link &lt;br /&gt;
wait_for_ping 192.168.0.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Sende Firmware&lt;br /&gt;
flash_firmware&lt;br /&gt;
&lt;br /&gt;
echo Warten auf Gluon &lt;br /&gt;
wait_for_ping 192.168.1.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Konfiguriere Gluon&lt;br /&gt;
configure_gluon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
while (&amp;lt;&amp;gt;)&lt;br /&gt;
{&lt;br /&gt;
        ($x,$x,$x,$b,$l,$n) = split /;/;&lt;br /&gt;
        printf &amp;quot;./flash.sh %-20s %-20s %20s&amp;quot;, $b, $l, $n;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Goettingen:&lt;br /&gt;
./flash.sh 51.502538568153156   9.902989268302917    Feinbaeckerei_Ruch_59&lt;br /&gt;
./flash.sh 51.52715549198952    9.91589069366455     Feinbaeckerei_Ruch_04&lt;br /&gt;
./flash.sh 51.53313912617003    9.934709072113037    Feinbaeckerei_Ruch_05&lt;br /&gt;
./flash.sh 51.527349063016814   9.950051307678223    Feinbaeckerei_Ruch_06&lt;br /&gt;
./flash.sh 51.53687307599091    9.926013350486755    Feinbaeckerei_Ruch_07&lt;br /&gt;
./flash.sh 51.529912132818495   9.945834875106812    Feinbaeckerei_Ruch_08&lt;br /&gt;
./flash.sh 51.54530420220255    9.930176138877867    Feinbaeckerei_Ruch_09&lt;br /&gt;
./flash.sh 51.53183100338405    9.934076070785522    Feinbaeckerei_Ruch_10&lt;br /&gt;
./flash.sh 51.51381713409578    9.955029487609863    Feinbaeckerei_Ruch_11&lt;br /&gt;
./flash.sh 51.512354884322896   9.955925345420837    Feinbaeckerei_Ruch_12&lt;br /&gt;
./flash.sh 51.54207807128854    9.914828538894653    Feinbaeckerei_Ruch_13&lt;br /&gt;
./flash.sh 51.53039602954396    9.938222765922546    Feinbaeckerei_Ruch_14&lt;br /&gt;
./flash.sh 51.531841014670526   9.937530755996704    Feinbaeckerei_Ruch_15&lt;br /&gt;
./flash.sh 51.53962579189816    9.94264841079712     Feinbaeckerei_Ruch_16&lt;br /&gt;
./flash.sh 51.542595201771135   9.949799180030823    Feinbaeckerei_Ruch_17&lt;br /&gt;
./flash.sh 51.51515248101072    9.94013249874115     Feinbaeckerei_Ruch_18&lt;br /&gt;
./flash.sh 51.528887589675044   9.926066994667051    Feinbaeckerei_Ruch_19&lt;br /&gt;
./flash.sh 51.53467078339061    9.936929941177368    Feinbaeckerei_Ruch_20&lt;br /&gt;
./flash.sh 51.57874306327084    9.759174585342407    Feinbaeckerei_Ruch_21&lt;br /&gt;
./flash.sh 51.58850629232994    9.927461743354797    Feinbaeckerei_Ruch_22&lt;br /&gt;
./flash.sh 51.50285579510823    9.765300750732422    Feinbaeckerei_Ruch_23&lt;br /&gt;
./flash.sh 51.50255526436374    9.761003851890564    Feinbaeckerei_Ruch_24&lt;br /&gt;
./flash.sh 51.51246839397649    10.25948703289032    Feinbaeckerei_Ruch_25&lt;br /&gt;
./flash.sh 51.508946124423126   10.255286693572998   Feinbaeckerei_Ruch_26&lt;br /&gt;
./flash.sh 51.78783373327458    10.062666535377502   Feinbaeckerei_Ruch_27&lt;br /&gt;
./flash.sh 51.82073590612012    9.872143864631653    Feinbaeckerei_Ruch_28&lt;br /&gt;
./flash.sh 51.81830862006357    9.865947961807251    Feinbaeckerei_Ruch_29&lt;br /&gt;
./flash.sh 51.55195257991039    9.871907830238342    Feinbaeckerei_Ruch_30&lt;br /&gt;
./flash.sh 51.431898980502545   9.64473009109497     Feinbaeckerei_Ruch_33&lt;br /&gt;
./flash.sh 51.41698044851287    9.651864767074585    Feinbaeckerei_Ruch_34&lt;br /&gt;
./flash.sh 51.417833545176194   9.651778936386108    Feinbaeckerei_Ruch_35&lt;br /&gt;
./flash.sh 51.41101167200516    9.643405079841614    Feinbaeckerei_Ruch_36&lt;br /&gt;
./flash.sh 51.64851618597645    9.835386872291563    Feinbaeckerei_Ruch_37&lt;br /&gt;
./flash.sh 51.857828585762874   9.9593585729599      Feinbaeckerei_Ruch_53&lt;br /&gt;
./flash.sh 51.70541835968561    9.999339580535889    Feinbaeckerei_Ruch_54&lt;br /&gt;
./flash.sh 51.70633254826029    9.991545081138609    Feinbaeckerei_Ruch_55&lt;br /&gt;
./flash.sh 51.69041970568905    9.983407258987425    Feinbaeckerei_Ruch_56&lt;br /&gt;
./flash.sh 51.63002240144565    9.9363774061203      Feinbaeckerei_Ruch_57&lt;br /&gt;
&lt;br /&gt;
# Hildesheim:&lt;br /&gt;
./flash.sh 52.148958258516465   9.937713146209717    Feinbaeckerei_Ruch_38&lt;br /&gt;
./flash.sh 52.151048416345176   9.973622560501099    Feinbaeckerei_Ruch_39&lt;br /&gt;
./flash.sh 52.154063337297565   9.955195784568787    Feinbaeckerei_Ruch_40&lt;br /&gt;
./flash.sh 52.15090688119581    9.93088960647583     Feinbaeckerei_Ruch_41&lt;br /&gt;
./flash.sh 52.13966492024524    9.939993023872375    Feinbaeckerei_Ruch_42&lt;br /&gt;
./flash.sh 52.15336557899155    9.950260519981384    Feinbaeckerei_Ruch_43&lt;br /&gt;
./flash.sh 52.159276430590616   9.940513372421265    Feinbaeckerei_Ruch_44&lt;br /&gt;
&lt;br /&gt;
# Kasseler Block:&lt;br /&gt;
# Fuldabrueck:&lt;br /&gt;
./flash.sh 51.27328643729277    9.501843452453613    Feinbaeckerei_Ruch_31&lt;br /&gt;
# Harleshausen:&lt;br /&gt;
./flash.sh 51.33653057987049    9.438816905021667    Feinbaeckerei_Ruch_32&lt;br /&gt;
# Hofgeismar:&lt;br /&gt;
./flash.sh 51.494199716235535   9.381396174430847    Feinbaeckerei_Ruch_45&lt;br /&gt;
# Kassel&lt;br /&gt;
./flash.sh 51.289704482241135   9.471845626831055    Feinbaeckerei_Ruch_46&lt;br /&gt;
./flash.sh 51.29184815912083    9.45449709892273     Feinbaeckerei_Ruch_47&lt;br /&gt;
./flash.sh 51.316846975739736   9.496994018554688    Feinbaeckerei_Ruch_48&lt;br /&gt;
./flash.sh 51.3145703464324     9.494735598564148    Feinbaeckerei_Ruch_49&lt;br /&gt;
./flash.sh 51.33396669250336    9.492627382278442    Feinbaeckerei_Ruch_50&lt;br /&gt;
./flash.sh 51.31794333864989    9.49968695640564     Feinbaeckerei_Ruch_51&lt;br /&gt;
./flash.sh 51.313095003491476   9.445066452026367    Feinbaeckerei_Ruch_52&lt;br /&gt;
# Reinhardshagen&lt;br /&gt;
./flash.sh 51.489537041989      9.606696367263794    Feinbaeckerei_Ruch_58&lt;br /&gt;
# Vellmar&lt;br /&gt;
./flash.sh 51.36275442884671    9.468364119529724    Feinbaeckerei_Ruch_60&lt;br /&gt;
# Witzenhausen&lt;br /&gt;
./flash.sh 51.34131611932317    9.860449433326721    Feinbaeckerei_Ruch_61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Flash-Aktion für Ruch mit Keys für Kassel ===&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_49&lt;br /&gt;
 a66db04d6ea85f7394ab5df01bcdbf096726236d0c43059f82cf1d298b7a9782&lt;br /&gt;
 (schon per Email nach Kassel gegangen)&lt;br /&gt;
&lt;br /&gt;
=== 2. Flash-Aktion für Ruch mit Keys für Hildesheim ===&lt;br /&gt;
&lt;br /&gt;
(muss alles noch an keys@freifunk-hi.de versendet werden)&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_42&lt;br /&gt;
 efff191cdda02c73c2b87dbf6fc6b5bd2ddc95dcc59912203744625500138d53&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_39&lt;br /&gt;
 f60190ec56f7c5f5a295d4c9f07a57251b41c572bb4f2461608cd68f053c6b5f&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_39&lt;br /&gt;
 0a758b5f34c45fa66b2760be23e040dce7e27a54920e09496699e11ca7786ec7&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9856</id>
		<title>Freifunk/Flashscript</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9856"/>
		<updated>2015-06-18T19:30:04Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* 2. Flash-Aktion für Ruch mit Keys für Hildesheim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# FIRMWARE=&amp;quot;gluon-ffhi-0.4-experimental-20150328-tp-link-tl-wr1043n-nd-v2.bin&amp;quot;&lt;br /&gt;
# FIRMWARE=gluon-ffhi-wr1043.bin&lt;br /&gt;
FIRMWARE=gluon-ffgoe-0.6.5-tp-link-tl-wr1043n-nd-v2.bin&lt;br /&gt;
&lt;br /&gt;
# NAME=ccc-geismar-land&lt;br /&gt;
# LAENGE=9.949756264686584&lt;br /&gt;
# BREITE=51.52233597559833&lt;br /&gt;
# CONTACT=&amp;quot;freifunk@example.com&amp;quot;&lt;br /&gt;
BREITE=$1&lt;br /&gt;
LAENGE=$2&lt;br /&gt;
NAME=$3&lt;br /&gt;
&lt;br /&gt;
configure_gluon()&lt;br /&gt;
{&lt;br /&gt;
   curl &#039;http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
   -H &#039;Accept-Encoding: gzip, deflate&#039; \&lt;br /&gt;
   -H &#039;Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4&#039; \&lt;br /&gt;
   -H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36&#039; \&lt;br /&gt;
   -H &#039;Content-Type: multipart/form-data; boundary=----ffgoe-4711&#039; \&lt;br /&gt;
   -H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8&#039; \&lt;br /&gt;
   -H &#039;Cache-Control: max-age=0&#039; \&lt;br /&gt;
   -H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
   --compressed \&lt;br /&gt;
   --data-binary \&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.submit&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._hostname&amp;quot;\r\n\r\n&#039;&amp;quot;$NAME&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._limit_enabled&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._latitude&amp;quot;\r\n\r\n&#039;&amp;quot;$BREITE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._longitude&amp;quot;\r\n\r\n&#039;&amp;quot;$LAENGE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._contact&amp;quot;\r\n\r\n&#039;&amp;quot;$CONTACT&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711--\r\n&#039;&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl -v &#039;http://192.168.1.1/cgi-bin/luci/gluon-config-mode/reboot&#039; \&lt;br /&gt;
-H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
-H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
-H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&#039; \&lt;br /&gt;
-H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.6.3 (KHTML, like Gecko) Version/8.0.6 Safari/600.6.3&#039; \&lt;br /&gt;
-H &#039;Accept-Language: en-us&#039; \&lt;br /&gt;
-H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
-H &#039;Accept-Encoding: gzip, deflate&#039;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
flash_firmware()&lt;br /&gt;
{&lt;br /&gt;
   curl \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/userRpm/SoftwareUpgradeRpm.htm&#039; \&lt;br /&gt;
   --form &amp;quot;Filename=@$FIRMWARE&amp;quot; -F &#039;Upgrade=Upgrade&#039; \&lt;br /&gt;
   http://192.168.0.1/incoming/Firmware.htm&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl \&lt;br /&gt;
   --max-time 2 \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/incoming/Firmware.htm&#039; \&lt;br /&gt;
   http://192.168.0.1/userRpm/FirmwareUpdateTemp.htm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
wait_for_ping ()&lt;br /&gt;
{&lt;br /&gt;
   ip=$1&lt;br /&gt;
   echo -n &amp;quot;ping $ip &amp;quot;&lt;br /&gt;
   while true; do&lt;br /&gt;
      echo -n &amp;quot;.&amp;quot;&lt;br /&gt;
      ping -c 1 -W 5 $ip &amp;gt;/dev/null&lt;br /&gt;
      if test &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot;; then&lt;br /&gt;
         echo&lt;br /&gt;
         echo Es pingt.&lt;br /&gt;
         return&lt;br /&gt;
      fi&lt;br /&gt;
      sleep 3&lt;br /&gt;
   done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Happy Flashing fuer &#039;$NAME&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo Warten auf TP-Link &lt;br /&gt;
wait_for_ping 192.168.0.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Sende Firmware&lt;br /&gt;
flash_firmware&lt;br /&gt;
&lt;br /&gt;
echo Warten auf Gluon &lt;br /&gt;
wait_for_ping 192.168.1.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Konfiguriere Gluon&lt;br /&gt;
configure_gluon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
while (&amp;lt;&amp;gt;)&lt;br /&gt;
{&lt;br /&gt;
        ($x,$x,$x,$b,$l,$n) = split /;/;&lt;br /&gt;
        printf &amp;quot;./flash.sh %-20s %-20s %20s&amp;quot;, $b, $l, $n;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Goettingen:&lt;br /&gt;
./flash.sh 51.502538568153156   9.902989268302917    Feinbaeckerei_Ruch_59&lt;br /&gt;
./flash.sh 51.52715549198952    9.91589069366455     Feinbaeckerei_Ruch_04&lt;br /&gt;
./flash.sh 51.53313912617003    9.934709072113037    Feinbaeckerei_Ruch_05&lt;br /&gt;
./flash.sh 51.527349063016814   9.950051307678223    Feinbaeckerei_Ruch_06&lt;br /&gt;
./flash.sh 51.53687307599091    9.926013350486755    Feinbaeckerei_Ruch_07&lt;br /&gt;
./flash.sh 51.529912132818495   9.945834875106812    Feinbaeckerei_Ruch_08&lt;br /&gt;
./flash.sh 51.54530420220255    9.930176138877867    Feinbaeckerei_Ruch_09&lt;br /&gt;
./flash.sh 51.53183100338405    9.934076070785522    Feinbaeckerei_Ruch_10&lt;br /&gt;
./flash.sh 51.51381713409578    9.955029487609863    Feinbaeckerei_Ruch_11&lt;br /&gt;
./flash.sh 51.512354884322896   9.955925345420837    Feinbaeckerei_Ruch_12&lt;br /&gt;
./flash.sh 51.54207807128854    9.914828538894653    Feinbaeckerei_Ruch_13&lt;br /&gt;
./flash.sh 51.53039602954396    9.938222765922546    Feinbaeckerei_Ruch_14&lt;br /&gt;
./flash.sh 51.531841014670526   9.937530755996704    Feinbaeckerei_Ruch_15&lt;br /&gt;
./flash.sh 51.53962579189816    9.94264841079712     Feinbaeckerei_Ruch_16&lt;br /&gt;
./flash.sh 51.542595201771135   9.949799180030823    Feinbaeckerei_Ruch_17&lt;br /&gt;
./flash.sh 51.51515248101072    9.94013249874115     Feinbaeckerei_Ruch_18&lt;br /&gt;
./flash.sh 51.528887589675044   9.926066994667051    Feinbaeckerei_Ruch_19&lt;br /&gt;
./flash.sh 51.53467078339061    9.936929941177368    Feinbaeckerei_Ruch_20&lt;br /&gt;
./flash.sh 51.57874306327084    9.759174585342407    Feinbaeckerei_Ruch_21&lt;br /&gt;
./flash.sh 51.58850629232994    9.927461743354797    Feinbaeckerei_Ruch_22&lt;br /&gt;
./flash.sh 51.50285579510823    9.765300750732422    Feinbaeckerei_Ruch_23&lt;br /&gt;
./flash.sh 51.50255526436374    9.761003851890564    Feinbaeckerei_Ruch_24&lt;br /&gt;
./flash.sh 51.51246839397649    10.25948703289032    Feinbaeckerei_Ruch_25&lt;br /&gt;
./flash.sh 51.508946124423126   10.255286693572998   Feinbaeckerei_Ruch_26&lt;br /&gt;
./flash.sh 51.78783373327458    10.062666535377502   Feinbaeckerei_Ruch_27&lt;br /&gt;
./flash.sh 51.82073590612012    9.872143864631653    Feinbaeckerei_Ruch_28&lt;br /&gt;
./flash.sh 51.81830862006357    9.865947961807251    Feinbaeckerei_Ruch_29&lt;br /&gt;
./flash.sh 51.55195257991039    9.871907830238342    Feinbaeckerei_Ruch_30&lt;br /&gt;
./flash.sh 51.431898980502545   9.64473009109497     Feinbaeckerei_Ruch_33&lt;br /&gt;
./flash.sh 51.41698044851287    9.651864767074585    Feinbaeckerei_Ruch_34&lt;br /&gt;
./flash.sh 51.417833545176194   9.651778936386108    Feinbaeckerei_Ruch_35&lt;br /&gt;
./flash.sh 51.41101167200516    9.643405079841614    Feinbaeckerei_Ruch_36&lt;br /&gt;
./flash.sh 51.64851618597645    9.835386872291563    Feinbaeckerei_Ruch_37&lt;br /&gt;
./flash.sh 51.857828585762874   9.9593585729599      Feinbaeckerei_Ruch_53&lt;br /&gt;
./flash.sh 51.70541835968561    9.999339580535889    Feinbaeckerei_Ruch_54&lt;br /&gt;
./flash.sh 51.70633254826029    9.991545081138609    Feinbaeckerei_Ruch_55&lt;br /&gt;
./flash.sh 51.69041970568905    9.983407258987425    Feinbaeckerei_Ruch_56&lt;br /&gt;
./flash.sh 51.63002240144565    9.9363774061203      Feinbaeckerei_Ruch_57&lt;br /&gt;
&lt;br /&gt;
# Hildesheim:&lt;br /&gt;
./flash.sh 52.148958258516465   9.937713146209717    Feinbaeckerei_Ruch_38&lt;br /&gt;
./flash.sh 52.151048416345176   9.973622560501099    Feinbaeckerei_Ruch_39&lt;br /&gt;
./flash.sh 52.154063337297565   9.955195784568787    Feinbaeckerei_Ruch_40&lt;br /&gt;
./flash.sh 52.15090688119581    9.93088960647583     Feinbaeckerei_Ruch_41&lt;br /&gt;
./flash.sh 52.13966492024524    9.939993023872375    Feinbaeckerei_Ruch_42&lt;br /&gt;
./flash.sh 52.15336557899155    9.950260519981384    Feinbaeckerei_Ruch_43&lt;br /&gt;
./flash.sh 52.159276430590616   9.940513372421265    Feinbaeckerei_Ruch_44&lt;br /&gt;
&lt;br /&gt;
# Kasseler Block:&lt;br /&gt;
# Fuldabrueck:&lt;br /&gt;
./flash.sh 51.27328643729277    9.501843452453613    Feinbaeckerei_Ruch_31&lt;br /&gt;
# Harleshausen:&lt;br /&gt;
./flash.sh 51.33653057987049    9.438816905021667    Feinbaeckerei_Ruch_32&lt;br /&gt;
# Hofgeismar:&lt;br /&gt;
./flash.sh 51.494199716235535   9.381396174430847    Feinbaeckerei_Ruch_45&lt;br /&gt;
# Kassel&lt;br /&gt;
./flash.sh 51.289704482241135   9.471845626831055    Feinbaeckerei_Ruch_46&lt;br /&gt;
./flash.sh 51.29184815912083    9.45449709892273     Feinbaeckerei_Ruch_47&lt;br /&gt;
./flash.sh 51.316846975739736   9.496994018554688    Feinbaeckerei_Ruch_48&lt;br /&gt;
./flash.sh 51.3145703464324     9.494735598564148    Feinbaeckerei_Ruch_49&lt;br /&gt;
./flash.sh 51.33396669250336    9.492627382278442    Feinbaeckerei_Ruch_50&lt;br /&gt;
./flash.sh 51.31794333864989    9.49968695640564     Feinbaeckerei_Ruch_51&lt;br /&gt;
./flash.sh 51.313095003491476   9.445066452026367    Feinbaeckerei_Ruch_52&lt;br /&gt;
# Reinhardshagen&lt;br /&gt;
./flash.sh 51.489537041989      9.606696367263794    Feinbaeckerei_Ruch_58&lt;br /&gt;
# Vellmar&lt;br /&gt;
./flash.sh 51.36275442884671    9.468364119529724    Feinbaeckerei_Ruch_60&lt;br /&gt;
# Witzenhausen&lt;br /&gt;
./flash.sh 51.34131611932317    9.860449433326721    Feinbaeckerei_Ruch_61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Flash-Aktion für Ruch mit Keys für Kassel ===&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_49&lt;br /&gt;
 a66db04d6ea85f7394ab5df01bcdbf096726236d0c43059f82cf1d298b7a9782&lt;br /&gt;
 (schon per Email nach Kassel gegangen)&lt;br /&gt;
&lt;br /&gt;
=== 2. Flash-Aktion für Ruch mit Keys für Hildesheim ===&lt;br /&gt;
&lt;br /&gt;
(muss alles noch an keys@freifunk-hi.de versendet werden)&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_42&lt;br /&gt;
 efff191cdda02c73c2b87dbf6fc6b5bd2ddc95dcc59912203744625500138d53&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_39&lt;br /&gt;
 f60190ec56f7c5f5a295d4c9f07a57251b41c572bb4f2461608cd68f053c6b5f&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9855</id>
		<title>Freifunk/Flashscript</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9855"/>
		<updated>2015-06-18T19:18:52Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* 2. Flash-Aktion für Ruch mit Keys */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# FIRMWARE=&amp;quot;gluon-ffhi-0.4-experimental-20150328-tp-link-tl-wr1043n-nd-v2.bin&amp;quot;&lt;br /&gt;
# FIRMWARE=gluon-ffhi-wr1043.bin&lt;br /&gt;
FIRMWARE=gluon-ffgoe-0.6.5-tp-link-tl-wr1043n-nd-v2.bin&lt;br /&gt;
&lt;br /&gt;
# NAME=ccc-geismar-land&lt;br /&gt;
# LAENGE=9.949756264686584&lt;br /&gt;
# BREITE=51.52233597559833&lt;br /&gt;
# CONTACT=&amp;quot;freifunk@example.com&amp;quot;&lt;br /&gt;
BREITE=$1&lt;br /&gt;
LAENGE=$2&lt;br /&gt;
NAME=$3&lt;br /&gt;
&lt;br /&gt;
configure_gluon()&lt;br /&gt;
{&lt;br /&gt;
   curl &#039;http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
   -H &#039;Accept-Encoding: gzip, deflate&#039; \&lt;br /&gt;
   -H &#039;Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4&#039; \&lt;br /&gt;
   -H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36&#039; \&lt;br /&gt;
   -H &#039;Content-Type: multipart/form-data; boundary=----ffgoe-4711&#039; \&lt;br /&gt;
   -H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8&#039; \&lt;br /&gt;
   -H &#039;Cache-Control: max-age=0&#039; \&lt;br /&gt;
   -H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
   --compressed \&lt;br /&gt;
   --data-binary \&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.submit&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._hostname&amp;quot;\r\n\r\n&#039;&amp;quot;$NAME&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._limit_enabled&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._latitude&amp;quot;\r\n\r\n&#039;&amp;quot;$BREITE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._longitude&amp;quot;\r\n\r\n&#039;&amp;quot;$LAENGE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._contact&amp;quot;\r\n\r\n&#039;&amp;quot;$CONTACT&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711--\r\n&#039;&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl -v &#039;http://192.168.1.1/cgi-bin/luci/gluon-config-mode/reboot&#039; \&lt;br /&gt;
-H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
-H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
-H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&#039; \&lt;br /&gt;
-H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.6.3 (KHTML, like Gecko) Version/8.0.6 Safari/600.6.3&#039; \&lt;br /&gt;
-H &#039;Accept-Language: en-us&#039; \&lt;br /&gt;
-H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
-H &#039;Accept-Encoding: gzip, deflate&#039;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
flash_firmware()&lt;br /&gt;
{&lt;br /&gt;
   curl \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/userRpm/SoftwareUpgradeRpm.htm&#039; \&lt;br /&gt;
   --form &amp;quot;Filename=@$FIRMWARE&amp;quot; -F &#039;Upgrade=Upgrade&#039; \&lt;br /&gt;
   http://192.168.0.1/incoming/Firmware.htm&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl \&lt;br /&gt;
   --max-time 2 \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/incoming/Firmware.htm&#039; \&lt;br /&gt;
   http://192.168.0.1/userRpm/FirmwareUpdateTemp.htm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
wait_for_ping ()&lt;br /&gt;
{&lt;br /&gt;
   ip=$1&lt;br /&gt;
   echo -n &amp;quot;ping $ip &amp;quot;&lt;br /&gt;
   while true; do&lt;br /&gt;
      echo -n &amp;quot;.&amp;quot;&lt;br /&gt;
      ping -c 1 -W 5 $ip &amp;gt;/dev/null&lt;br /&gt;
      if test &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot;; then&lt;br /&gt;
         echo&lt;br /&gt;
         echo Es pingt.&lt;br /&gt;
         return&lt;br /&gt;
      fi&lt;br /&gt;
      sleep 3&lt;br /&gt;
   done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Happy Flashing fuer &#039;$NAME&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo Warten auf TP-Link &lt;br /&gt;
wait_for_ping 192.168.0.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Sende Firmware&lt;br /&gt;
flash_firmware&lt;br /&gt;
&lt;br /&gt;
echo Warten auf Gluon &lt;br /&gt;
wait_for_ping 192.168.1.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Konfiguriere Gluon&lt;br /&gt;
configure_gluon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
while (&amp;lt;&amp;gt;)&lt;br /&gt;
{&lt;br /&gt;
        ($x,$x,$x,$b,$l,$n) = split /;/;&lt;br /&gt;
        printf &amp;quot;./flash.sh %-20s %-20s %20s&amp;quot;, $b, $l, $n;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Goettingen:&lt;br /&gt;
./flash.sh 51.502538568153156   9.902989268302917    Feinbaeckerei_Ruch_59&lt;br /&gt;
./flash.sh 51.52715549198952    9.91589069366455     Feinbaeckerei_Ruch_04&lt;br /&gt;
./flash.sh 51.53313912617003    9.934709072113037    Feinbaeckerei_Ruch_05&lt;br /&gt;
./flash.sh 51.527349063016814   9.950051307678223    Feinbaeckerei_Ruch_06&lt;br /&gt;
./flash.sh 51.53687307599091    9.926013350486755    Feinbaeckerei_Ruch_07&lt;br /&gt;
./flash.sh 51.529912132818495   9.945834875106812    Feinbaeckerei_Ruch_08&lt;br /&gt;
./flash.sh 51.54530420220255    9.930176138877867    Feinbaeckerei_Ruch_09&lt;br /&gt;
./flash.sh 51.53183100338405    9.934076070785522    Feinbaeckerei_Ruch_10&lt;br /&gt;
./flash.sh 51.51381713409578    9.955029487609863    Feinbaeckerei_Ruch_11&lt;br /&gt;
./flash.sh 51.512354884322896   9.955925345420837    Feinbaeckerei_Ruch_12&lt;br /&gt;
./flash.sh 51.54207807128854    9.914828538894653    Feinbaeckerei_Ruch_13&lt;br /&gt;
./flash.sh 51.53039602954396    9.938222765922546    Feinbaeckerei_Ruch_14&lt;br /&gt;
./flash.sh 51.531841014670526   9.937530755996704    Feinbaeckerei_Ruch_15&lt;br /&gt;
./flash.sh 51.53962579189816    9.94264841079712     Feinbaeckerei_Ruch_16&lt;br /&gt;
./flash.sh 51.542595201771135   9.949799180030823    Feinbaeckerei_Ruch_17&lt;br /&gt;
./flash.sh 51.51515248101072    9.94013249874115     Feinbaeckerei_Ruch_18&lt;br /&gt;
./flash.sh 51.528887589675044   9.926066994667051    Feinbaeckerei_Ruch_19&lt;br /&gt;
./flash.sh 51.53467078339061    9.936929941177368    Feinbaeckerei_Ruch_20&lt;br /&gt;
./flash.sh 51.57874306327084    9.759174585342407    Feinbaeckerei_Ruch_21&lt;br /&gt;
./flash.sh 51.58850629232994    9.927461743354797    Feinbaeckerei_Ruch_22&lt;br /&gt;
./flash.sh 51.50285579510823    9.765300750732422    Feinbaeckerei_Ruch_23&lt;br /&gt;
./flash.sh 51.50255526436374    9.761003851890564    Feinbaeckerei_Ruch_24&lt;br /&gt;
./flash.sh 51.51246839397649    10.25948703289032    Feinbaeckerei_Ruch_25&lt;br /&gt;
./flash.sh 51.508946124423126   10.255286693572998   Feinbaeckerei_Ruch_26&lt;br /&gt;
./flash.sh 51.78783373327458    10.062666535377502   Feinbaeckerei_Ruch_27&lt;br /&gt;
./flash.sh 51.82073590612012    9.872143864631653    Feinbaeckerei_Ruch_28&lt;br /&gt;
./flash.sh 51.81830862006357    9.865947961807251    Feinbaeckerei_Ruch_29&lt;br /&gt;
./flash.sh 51.55195257991039    9.871907830238342    Feinbaeckerei_Ruch_30&lt;br /&gt;
./flash.sh 51.431898980502545   9.64473009109497     Feinbaeckerei_Ruch_33&lt;br /&gt;
./flash.sh 51.41698044851287    9.651864767074585    Feinbaeckerei_Ruch_34&lt;br /&gt;
./flash.sh 51.417833545176194   9.651778936386108    Feinbaeckerei_Ruch_35&lt;br /&gt;
./flash.sh 51.41101167200516    9.643405079841614    Feinbaeckerei_Ruch_36&lt;br /&gt;
./flash.sh 51.64851618597645    9.835386872291563    Feinbaeckerei_Ruch_37&lt;br /&gt;
./flash.sh 51.857828585762874   9.9593585729599      Feinbaeckerei_Ruch_53&lt;br /&gt;
./flash.sh 51.70541835968561    9.999339580535889    Feinbaeckerei_Ruch_54&lt;br /&gt;
./flash.sh 51.70633254826029    9.991545081138609    Feinbaeckerei_Ruch_55&lt;br /&gt;
./flash.sh 51.69041970568905    9.983407258987425    Feinbaeckerei_Ruch_56&lt;br /&gt;
./flash.sh 51.63002240144565    9.9363774061203      Feinbaeckerei_Ruch_57&lt;br /&gt;
&lt;br /&gt;
# Hildesheim:&lt;br /&gt;
./flash.sh 52.148958258516465   9.937713146209717    Feinbaeckerei_Ruch_38&lt;br /&gt;
./flash.sh 52.151048416345176   9.973622560501099    Feinbaeckerei_Ruch_39&lt;br /&gt;
./flash.sh 52.154063337297565   9.955195784568787    Feinbaeckerei_Ruch_40&lt;br /&gt;
./flash.sh 52.15090688119581    9.93088960647583     Feinbaeckerei_Ruch_41&lt;br /&gt;
./flash.sh 52.13966492024524    9.939993023872375    Feinbaeckerei_Ruch_42&lt;br /&gt;
./flash.sh 52.15336557899155    9.950260519981384    Feinbaeckerei_Ruch_43&lt;br /&gt;
./flash.sh 52.159276430590616   9.940513372421265    Feinbaeckerei_Ruch_44&lt;br /&gt;
&lt;br /&gt;
# Kasseler Block:&lt;br /&gt;
# Fuldabrueck:&lt;br /&gt;
./flash.sh 51.27328643729277    9.501843452453613    Feinbaeckerei_Ruch_31&lt;br /&gt;
# Harleshausen:&lt;br /&gt;
./flash.sh 51.33653057987049    9.438816905021667    Feinbaeckerei_Ruch_32&lt;br /&gt;
# Hofgeismar:&lt;br /&gt;
./flash.sh 51.494199716235535   9.381396174430847    Feinbaeckerei_Ruch_45&lt;br /&gt;
# Kassel&lt;br /&gt;
./flash.sh 51.289704482241135   9.471845626831055    Feinbaeckerei_Ruch_46&lt;br /&gt;
./flash.sh 51.29184815912083    9.45449709892273     Feinbaeckerei_Ruch_47&lt;br /&gt;
./flash.sh 51.316846975739736   9.496994018554688    Feinbaeckerei_Ruch_48&lt;br /&gt;
./flash.sh 51.3145703464324     9.494735598564148    Feinbaeckerei_Ruch_49&lt;br /&gt;
./flash.sh 51.33396669250336    9.492627382278442    Feinbaeckerei_Ruch_50&lt;br /&gt;
./flash.sh 51.31794333864989    9.49968695640564     Feinbaeckerei_Ruch_51&lt;br /&gt;
./flash.sh 51.313095003491476   9.445066452026367    Feinbaeckerei_Ruch_52&lt;br /&gt;
# Reinhardshagen&lt;br /&gt;
./flash.sh 51.489537041989      9.606696367263794    Feinbaeckerei_Ruch_58&lt;br /&gt;
# Vellmar&lt;br /&gt;
./flash.sh 51.36275442884671    9.468364119529724    Feinbaeckerei_Ruch_60&lt;br /&gt;
# Witzenhausen&lt;br /&gt;
./flash.sh 51.34131611932317    9.860449433326721    Feinbaeckerei_Ruch_61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Flash-Aktion für Ruch mit Keys für Kassel ===&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_49&lt;br /&gt;
 a66db04d6ea85f7394ab5df01bcdbf096726236d0c43059f82cf1d298b7a9782&lt;br /&gt;
 (schon per Email nach Kassel gegangen)&lt;br /&gt;
&lt;br /&gt;
=== 2. Flash-Aktion für Ruch mit Keys für Hildesheim ===&lt;br /&gt;
&lt;br /&gt;
(muss alles noch an keys@freifunk-hi.de versendet werden)&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_42&lt;br /&gt;
 efff191cdda02c73c2b87dbf6fc6b5bd2ddc95dcc59912203744625500138d53&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9854</id>
		<title>Freifunk/Flashscript</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9854"/>
		<updated>2015-06-18T18:37:24Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* 2. Flash-Aktion für Ruch mit Keys */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# FIRMWARE=&amp;quot;gluon-ffhi-0.4-experimental-20150328-tp-link-tl-wr1043n-nd-v2.bin&amp;quot;&lt;br /&gt;
# FIRMWARE=gluon-ffhi-wr1043.bin&lt;br /&gt;
FIRMWARE=gluon-ffgoe-0.6.5-tp-link-tl-wr1043n-nd-v2.bin&lt;br /&gt;
&lt;br /&gt;
# NAME=ccc-geismar-land&lt;br /&gt;
# LAENGE=9.949756264686584&lt;br /&gt;
# BREITE=51.52233597559833&lt;br /&gt;
# CONTACT=&amp;quot;freifunk@example.com&amp;quot;&lt;br /&gt;
BREITE=$1&lt;br /&gt;
LAENGE=$2&lt;br /&gt;
NAME=$3&lt;br /&gt;
&lt;br /&gt;
configure_gluon()&lt;br /&gt;
{&lt;br /&gt;
   curl &#039;http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
   -H &#039;Accept-Encoding: gzip, deflate&#039; \&lt;br /&gt;
   -H &#039;Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4&#039; \&lt;br /&gt;
   -H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36&#039; \&lt;br /&gt;
   -H &#039;Content-Type: multipart/form-data; boundary=----ffgoe-4711&#039; \&lt;br /&gt;
   -H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8&#039; \&lt;br /&gt;
   -H &#039;Cache-Control: max-age=0&#039; \&lt;br /&gt;
   -H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
   --compressed \&lt;br /&gt;
   --data-binary \&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.submit&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._hostname&amp;quot;\r\n\r\n&#039;&amp;quot;$NAME&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._limit_enabled&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._latitude&amp;quot;\r\n\r\n&#039;&amp;quot;$BREITE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._longitude&amp;quot;\r\n\r\n&#039;&amp;quot;$LAENGE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._contact&amp;quot;\r\n\r\n&#039;&amp;quot;$CONTACT&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711--\r\n&#039;&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl -v &#039;http://192.168.1.1/cgi-bin/luci/gluon-config-mode/reboot&#039; \&lt;br /&gt;
-H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
-H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
-H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&#039; \&lt;br /&gt;
-H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.6.3 (KHTML, like Gecko) Version/8.0.6 Safari/600.6.3&#039; \&lt;br /&gt;
-H &#039;Accept-Language: en-us&#039; \&lt;br /&gt;
-H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
-H &#039;Accept-Encoding: gzip, deflate&#039;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
flash_firmware()&lt;br /&gt;
{&lt;br /&gt;
   curl \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/userRpm/SoftwareUpgradeRpm.htm&#039; \&lt;br /&gt;
   --form &amp;quot;Filename=@$FIRMWARE&amp;quot; -F &#039;Upgrade=Upgrade&#039; \&lt;br /&gt;
   http://192.168.0.1/incoming/Firmware.htm&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl \&lt;br /&gt;
   --max-time 2 \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/incoming/Firmware.htm&#039; \&lt;br /&gt;
   http://192.168.0.1/userRpm/FirmwareUpdateTemp.htm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
wait_for_ping ()&lt;br /&gt;
{&lt;br /&gt;
   ip=$1&lt;br /&gt;
   echo -n &amp;quot;ping $ip &amp;quot;&lt;br /&gt;
   while true; do&lt;br /&gt;
      echo -n &amp;quot;.&amp;quot;&lt;br /&gt;
      ping -c 1 -W 5 $ip &amp;gt;/dev/null&lt;br /&gt;
      if test &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot;; then&lt;br /&gt;
         echo&lt;br /&gt;
         echo Es pingt.&lt;br /&gt;
         return&lt;br /&gt;
      fi&lt;br /&gt;
      sleep 3&lt;br /&gt;
   done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Happy Flashing fuer &#039;$NAME&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo Warten auf TP-Link &lt;br /&gt;
wait_for_ping 192.168.0.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Sende Firmware&lt;br /&gt;
flash_firmware&lt;br /&gt;
&lt;br /&gt;
echo Warten auf Gluon &lt;br /&gt;
wait_for_ping 192.168.1.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Konfiguriere Gluon&lt;br /&gt;
configure_gluon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
while (&amp;lt;&amp;gt;)&lt;br /&gt;
{&lt;br /&gt;
        ($x,$x,$x,$b,$l,$n) = split /;/;&lt;br /&gt;
        printf &amp;quot;./flash.sh %-20s %-20s %20s&amp;quot;, $b, $l, $n;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Goettingen:&lt;br /&gt;
./flash.sh 51.502538568153156   9.902989268302917    Feinbaeckerei_Ruch_59&lt;br /&gt;
./flash.sh 51.52715549198952    9.91589069366455     Feinbaeckerei_Ruch_04&lt;br /&gt;
./flash.sh 51.53313912617003    9.934709072113037    Feinbaeckerei_Ruch_05&lt;br /&gt;
./flash.sh 51.527349063016814   9.950051307678223    Feinbaeckerei_Ruch_06&lt;br /&gt;
./flash.sh 51.53687307599091    9.926013350486755    Feinbaeckerei_Ruch_07&lt;br /&gt;
./flash.sh 51.529912132818495   9.945834875106812    Feinbaeckerei_Ruch_08&lt;br /&gt;
./flash.sh 51.54530420220255    9.930176138877867    Feinbaeckerei_Ruch_09&lt;br /&gt;
./flash.sh 51.53183100338405    9.934076070785522    Feinbaeckerei_Ruch_10&lt;br /&gt;
./flash.sh 51.51381713409578    9.955029487609863    Feinbaeckerei_Ruch_11&lt;br /&gt;
./flash.sh 51.512354884322896   9.955925345420837    Feinbaeckerei_Ruch_12&lt;br /&gt;
./flash.sh 51.54207807128854    9.914828538894653    Feinbaeckerei_Ruch_13&lt;br /&gt;
./flash.sh 51.53039602954396    9.938222765922546    Feinbaeckerei_Ruch_14&lt;br /&gt;
./flash.sh 51.531841014670526   9.937530755996704    Feinbaeckerei_Ruch_15&lt;br /&gt;
./flash.sh 51.53962579189816    9.94264841079712     Feinbaeckerei_Ruch_16&lt;br /&gt;
./flash.sh 51.542595201771135   9.949799180030823    Feinbaeckerei_Ruch_17&lt;br /&gt;
./flash.sh 51.51515248101072    9.94013249874115     Feinbaeckerei_Ruch_18&lt;br /&gt;
./flash.sh 51.528887589675044   9.926066994667051    Feinbaeckerei_Ruch_19&lt;br /&gt;
./flash.sh 51.53467078339061    9.936929941177368    Feinbaeckerei_Ruch_20&lt;br /&gt;
./flash.sh 51.57874306327084    9.759174585342407    Feinbaeckerei_Ruch_21&lt;br /&gt;
./flash.sh 51.58850629232994    9.927461743354797    Feinbaeckerei_Ruch_22&lt;br /&gt;
./flash.sh 51.50285579510823    9.765300750732422    Feinbaeckerei_Ruch_23&lt;br /&gt;
./flash.sh 51.50255526436374    9.761003851890564    Feinbaeckerei_Ruch_24&lt;br /&gt;
./flash.sh 51.51246839397649    10.25948703289032    Feinbaeckerei_Ruch_25&lt;br /&gt;
./flash.sh 51.508946124423126   10.255286693572998   Feinbaeckerei_Ruch_26&lt;br /&gt;
./flash.sh 51.78783373327458    10.062666535377502   Feinbaeckerei_Ruch_27&lt;br /&gt;
./flash.sh 51.82073590612012    9.872143864631653    Feinbaeckerei_Ruch_28&lt;br /&gt;
./flash.sh 51.81830862006357    9.865947961807251    Feinbaeckerei_Ruch_29&lt;br /&gt;
./flash.sh 51.55195257991039    9.871907830238342    Feinbaeckerei_Ruch_30&lt;br /&gt;
./flash.sh 51.431898980502545   9.64473009109497     Feinbaeckerei_Ruch_33&lt;br /&gt;
./flash.sh 51.41698044851287    9.651864767074585    Feinbaeckerei_Ruch_34&lt;br /&gt;
./flash.sh 51.417833545176194   9.651778936386108    Feinbaeckerei_Ruch_35&lt;br /&gt;
./flash.sh 51.41101167200516    9.643405079841614    Feinbaeckerei_Ruch_36&lt;br /&gt;
./flash.sh 51.64851618597645    9.835386872291563    Feinbaeckerei_Ruch_37&lt;br /&gt;
./flash.sh 51.857828585762874   9.9593585729599      Feinbaeckerei_Ruch_53&lt;br /&gt;
./flash.sh 51.70541835968561    9.999339580535889    Feinbaeckerei_Ruch_54&lt;br /&gt;
./flash.sh 51.70633254826029    9.991545081138609    Feinbaeckerei_Ruch_55&lt;br /&gt;
./flash.sh 51.69041970568905    9.983407258987425    Feinbaeckerei_Ruch_56&lt;br /&gt;
./flash.sh 51.63002240144565    9.9363774061203      Feinbaeckerei_Ruch_57&lt;br /&gt;
&lt;br /&gt;
# Hildesheim:&lt;br /&gt;
./flash.sh 52.148958258516465   9.937713146209717    Feinbaeckerei_Ruch_38&lt;br /&gt;
./flash.sh 52.151048416345176   9.973622560501099    Feinbaeckerei_Ruch_39&lt;br /&gt;
./flash.sh 52.154063337297565   9.955195784568787    Feinbaeckerei_Ruch_40&lt;br /&gt;
./flash.sh 52.15090688119581    9.93088960647583     Feinbaeckerei_Ruch_41&lt;br /&gt;
./flash.sh 52.13966492024524    9.939993023872375    Feinbaeckerei_Ruch_42&lt;br /&gt;
./flash.sh 52.15336557899155    9.950260519981384    Feinbaeckerei_Ruch_43&lt;br /&gt;
./flash.sh 52.159276430590616   9.940513372421265    Feinbaeckerei_Ruch_44&lt;br /&gt;
&lt;br /&gt;
# Kasseler Block:&lt;br /&gt;
# Fuldabrueck:&lt;br /&gt;
./flash.sh 51.27328643729277    9.501843452453613    Feinbaeckerei_Ruch_31&lt;br /&gt;
# Harleshausen:&lt;br /&gt;
./flash.sh 51.33653057987049    9.438816905021667    Feinbaeckerei_Ruch_32&lt;br /&gt;
# Hofgeismar:&lt;br /&gt;
./flash.sh 51.494199716235535   9.381396174430847    Feinbaeckerei_Ruch_45&lt;br /&gt;
# Kassel&lt;br /&gt;
./flash.sh 51.289704482241135   9.471845626831055    Feinbaeckerei_Ruch_46&lt;br /&gt;
./flash.sh 51.29184815912083    9.45449709892273     Feinbaeckerei_Ruch_47&lt;br /&gt;
./flash.sh 51.316846975739736   9.496994018554688    Feinbaeckerei_Ruch_48&lt;br /&gt;
./flash.sh 51.3145703464324     9.494735598564148    Feinbaeckerei_Ruch_49&lt;br /&gt;
./flash.sh 51.33396669250336    9.492627382278442    Feinbaeckerei_Ruch_50&lt;br /&gt;
./flash.sh 51.31794333864989    9.49968695640564     Feinbaeckerei_Ruch_51&lt;br /&gt;
./flash.sh 51.313095003491476   9.445066452026367    Feinbaeckerei_Ruch_52&lt;br /&gt;
# Reinhardshagen&lt;br /&gt;
./flash.sh 51.489537041989      9.606696367263794    Feinbaeckerei_Ruch_58&lt;br /&gt;
# Vellmar&lt;br /&gt;
./flash.sh 51.36275442884671    9.468364119529724    Feinbaeckerei_Ruch_60&lt;br /&gt;
# Witzenhausen&lt;br /&gt;
./flash.sh 51.34131611932317    9.860449433326721    Feinbaeckerei_Ruch_61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Flash-Aktion für Ruch mit Keys ===&lt;br /&gt;
&lt;br /&gt;
 # Feinbaeckerei_Ruch_49&lt;br /&gt;
 a66db04d6ea85f7394ab5df01bcdbf096726236d0c43059f82cf1d298b7a9782&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9853</id>
		<title>Freifunk/Flashscript</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9853"/>
		<updated>2015-06-18T18:35:50Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# FIRMWARE=&amp;quot;gluon-ffhi-0.4-experimental-20150328-tp-link-tl-wr1043n-nd-v2.bin&amp;quot;&lt;br /&gt;
# FIRMWARE=gluon-ffhi-wr1043.bin&lt;br /&gt;
FIRMWARE=gluon-ffgoe-0.6.5-tp-link-tl-wr1043n-nd-v2.bin&lt;br /&gt;
&lt;br /&gt;
# NAME=ccc-geismar-land&lt;br /&gt;
# LAENGE=9.949756264686584&lt;br /&gt;
# BREITE=51.52233597559833&lt;br /&gt;
# CONTACT=&amp;quot;freifunk@example.com&amp;quot;&lt;br /&gt;
BREITE=$1&lt;br /&gt;
LAENGE=$2&lt;br /&gt;
NAME=$3&lt;br /&gt;
&lt;br /&gt;
configure_gluon()&lt;br /&gt;
{&lt;br /&gt;
   curl &#039;http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
   -H &#039;Accept-Encoding: gzip, deflate&#039; \&lt;br /&gt;
   -H &#039;Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4&#039; \&lt;br /&gt;
   -H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36&#039; \&lt;br /&gt;
   -H &#039;Content-Type: multipart/form-data; boundary=----ffgoe-4711&#039; \&lt;br /&gt;
   -H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8&#039; \&lt;br /&gt;
   -H &#039;Cache-Control: max-age=0&#039; \&lt;br /&gt;
   -H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
   --compressed \&lt;br /&gt;
   --data-binary \&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.submit&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._hostname&amp;quot;\r\n\r\n&#039;&amp;quot;$NAME&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._limit_enabled&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._latitude&amp;quot;\r\n\r\n&#039;&amp;quot;$BREITE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._longitude&amp;quot;\r\n\r\n&#039;&amp;quot;$LAENGE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._contact&amp;quot;\r\n\r\n&#039;&amp;quot;$CONTACT&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711--\r\n&#039;&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl -v &#039;http://192.168.1.1/cgi-bin/luci/gluon-config-mode/reboot&#039; \&lt;br /&gt;
-H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
-H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
-H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&#039; \&lt;br /&gt;
-H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.6.3 (KHTML, like Gecko) Version/8.0.6 Safari/600.6.3&#039; \&lt;br /&gt;
-H &#039;Accept-Language: en-us&#039; \&lt;br /&gt;
-H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
-H &#039;Accept-Encoding: gzip, deflate&#039;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
flash_firmware()&lt;br /&gt;
{&lt;br /&gt;
   curl \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/userRpm/SoftwareUpgradeRpm.htm&#039; \&lt;br /&gt;
   --form &amp;quot;Filename=@$FIRMWARE&amp;quot; -F &#039;Upgrade=Upgrade&#039; \&lt;br /&gt;
   http://192.168.0.1/incoming/Firmware.htm&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl \&lt;br /&gt;
   --max-time 2 \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/incoming/Firmware.htm&#039; \&lt;br /&gt;
   http://192.168.0.1/userRpm/FirmwareUpdateTemp.htm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
wait_for_ping ()&lt;br /&gt;
{&lt;br /&gt;
   ip=$1&lt;br /&gt;
   echo -n &amp;quot;ping $ip &amp;quot;&lt;br /&gt;
   while true; do&lt;br /&gt;
      echo -n &amp;quot;.&amp;quot;&lt;br /&gt;
      ping -c 1 -W 5 $ip &amp;gt;/dev/null&lt;br /&gt;
      if test &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot;; then&lt;br /&gt;
         echo&lt;br /&gt;
         echo Es pingt.&lt;br /&gt;
         return&lt;br /&gt;
      fi&lt;br /&gt;
      sleep 3&lt;br /&gt;
   done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Happy Flashing fuer &#039;$NAME&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo Warten auf TP-Link &lt;br /&gt;
wait_for_ping 192.168.0.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Sende Firmware&lt;br /&gt;
flash_firmware&lt;br /&gt;
&lt;br /&gt;
echo Warten auf Gluon &lt;br /&gt;
wait_for_ping 192.168.1.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Konfiguriere Gluon&lt;br /&gt;
configure_gluon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
while (&amp;lt;&amp;gt;)&lt;br /&gt;
{&lt;br /&gt;
        ($x,$x,$x,$b,$l,$n) = split /;/;&lt;br /&gt;
        printf &amp;quot;./flash.sh %-20s %-20s %20s&amp;quot;, $b, $l, $n;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Goettingen:&lt;br /&gt;
./flash.sh 51.502538568153156   9.902989268302917    Feinbaeckerei_Ruch_59&lt;br /&gt;
./flash.sh 51.52715549198952    9.91589069366455     Feinbaeckerei_Ruch_04&lt;br /&gt;
./flash.sh 51.53313912617003    9.934709072113037    Feinbaeckerei_Ruch_05&lt;br /&gt;
./flash.sh 51.527349063016814   9.950051307678223    Feinbaeckerei_Ruch_06&lt;br /&gt;
./flash.sh 51.53687307599091    9.926013350486755    Feinbaeckerei_Ruch_07&lt;br /&gt;
./flash.sh 51.529912132818495   9.945834875106812    Feinbaeckerei_Ruch_08&lt;br /&gt;
./flash.sh 51.54530420220255    9.930176138877867    Feinbaeckerei_Ruch_09&lt;br /&gt;
./flash.sh 51.53183100338405    9.934076070785522    Feinbaeckerei_Ruch_10&lt;br /&gt;
./flash.sh 51.51381713409578    9.955029487609863    Feinbaeckerei_Ruch_11&lt;br /&gt;
./flash.sh 51.512354884322896   9.955925345420837    Feinbaeckerei_Ruch_12&lt;br /&gt;
./flash.sh 51.54207807128854    9.914828538894653    Feinbaeckerei_Ruch_13&lt;br /&gt;
./flash.sh 51.53039602954396    9.938222765922546    Feinbaeckerei_Ruch_14&lt;br /&gt;
./flash.sh 51.531841014670526   9.937530755996704    Feinbaeckerei_Ruch_15&lt;br /&gt;
./flash.sh 51.53962579189816    9.94264841079712     Feinbaeckerei_Ruch_16&lt;br /&gt;
./flash.sh 51.542595201771135   9.949799180030823    Feinbaeckerei_Ruch_17&lt;br /&gt;
./flash.sh 51.51515248101072    9.94013249874115     Feinbaeckerei_Ruch_18&lt;br /&gt;
./flash.sh 51.528887589675044   9.926066994667051    Feinbaeckerei_Ruch_19&lt;br /&gt;
./flash.sh 51.53467078339061    9.936929941177368    Feinbaeckerei_Ruch_20&lt;br /&gt;
./flash.sh 51.57874306327084    9.759174585342407    Feinbaeckerei_Ruch_21&lt;br /&gt;
./flash.sh 51.58850629232994    9.927461743354797    Feinbaeckerei_Ruch_22&lt;br /&gt;
./flash.sh 51.50285579510823    9.765300750732422    Feinbaeckerei_Ruch_23&lt;br /&gt;
./flash.sh 51.50255526436374    9.761003851890564    Feinbaeckerei_Ruch_24&lt;br /&gt;
./flash.sh 51.51246839397649    10.25948703289032    Feinbaeckerei_Ruch_25&lt;br /&gt;
./flash.sh 51.508946124423126   10.255286693572998   Feinbaeckerei_Ruch_26&lt;br /&gt;
./flash.sh 51.78783373327458    10.062666535377502   Feinbaeckerei_Ruch_27&lt;br /&gt;
./flash.sh 51.82073590612012    9.872143864631653    Feinbaeckerei_Ruch_28&lt;br /&gt;
./flash.sh 51.81830862006357    9.865947961807251    Feinbaeckerei_Ruch_29&lt;br /&gt;
./flash.sh 51.55195257991039    9.871907830238342    Feinbaeckerei_Ruch_30&lt;br /&gt;
./flash.sh 51.431898980502545   9.64473009109497     Feinbaeckerei_Ruch_33&lt;br /&gt;
./flash.sh 51.41698044851287    9.651864767074585    Feinbaeckerei_Ruch_34&lt;br /&gt;
./flash.sh 51.417833545176194   9.651778936386108    Feinbaeckerei_Ruch_35&lt;br /&gt;
./flash.sh 51.41101167200516    9.643405079841614    Feinbaeckerei_Ruch_36&lt;br /&gt;
./flash.sh 51.64851618597645    9.835386872291563    Feinbaeckerei_Ruch_37&lt;br /&gt;
./flash.sh 51.857828585762874   9.9593585729599      Feinbaeckerei_Ruch_53&lt;br /&gt;
./flash.sh 51.70541835968561    9.999339580535889    Feinbaeckerei_Ruch_54&lt;br /&gt;
./flash.sh 51.70633254826029    9.991545081138609    Feinbaeckerei_Ruch_55&lt;br /&gt;
./flash.sh 51.69041970568905    9.983407258987425    Feinbaeckerei_Ruch_56&lt;br /&gt;
./flash.sh 51.63002240144565    9.9363774061203      Feinbaeckerei_Ruch_57&lt;br /&gt;
&lt;br /&gt;
# Hildesheim:&lt;br /&gt;
./flash.sh 52.148958258516465   9.937713146209717    Feinbaeckerei_Ruch_38&lt;br /&gt;
./flash.sh 52.151048416345176   9.973622560501099    Feinbaeckerei_Ruch_39&lt;br /&gt;
./flash.sh 52.154063337297565   9.955195784568787    Feinbaeckerei_Ruch_40&lt;br /&gt;
./flash.sh 52.15090688119581    9.93088960647583     Feinbaeckerei_Ruch_41&lt;br /&gt;
./flash.sh 52.13966492024524    9.939993023872375    Feinbaeckerei_Ruch_42&lt;br /&gt;
./flash.sh 52.15336557899155    9.950260519981384    Feinbaeckerei_Ruch_43&lt;br /&gt;
./flash.sh 52.159276430590616   9.940513372421265    Feinbaeckerei_Ruch_44&lt;br /&gt;
&lt;br /&gt;
# Kasseler Block:&lt;br /&gt;
# Fuldabrueck:&lt;br /&gt;
./flash.sh 51.27328643729277    9.501843452453613    Feinbaeckerei_Ruch_31&lt;br /&gt;
# Harleshausen:&lt;br /&gt;
./flash.sh 51.33653057987049    9.438816905021667    Feinbaeckerei_Ruch_32&lt;br /&gt;
# Hofgeismar:&lt;br /&gt;
./flash.sh 51.494199716235535   9.381396174430847    Feinbaeckerei_Ruch_45&lt;br /&gt;
# Kassel&lt;br /&gt;
./flash.sh 51.289704482241135   9.471845626831055    Feinbaeckerei_Ruch_46&lt;br /&gt;
./flash.sh 51.29184815912083    9.45449709892273     Feinbaeckerei_Ruch_47&lt;br /&gt;
./flash.sh 51.316846975739736   9.496994018554688    Feinbaeckerei_Ruch_48&lt;br /&gt;
./flash.sh 51.3145703464324     9.494735598564148    Feinbaeckerei_Ruch_49&lt;br /&gt;
./flash.sh 51.33396669250336    9.492627382278442    Feinbaeckerei_Ruch_50&lt;br /&gt;
./flash.sh 51.31794333864989    9.49968695640564     Feinbaeckerei_Ruch_51&lt;br /&gt;
./flash.sh 51.313095003491476   9.445066452026367    Feinbaeckerei_Ruch_52&lt;br /&gt;
# Reinhardshagen&lt;br /&gt;
./flash.sh 51.489537041989      9.606696367263794    Feinbaeckerei_Ruch_58&lt;br /&gt;
# Vellmar&lt;br /&gt;
./flash.sh 51.36275442884671    9.468364119529724    Feinbaeckerei_Ruch_60&lt;br /&gt;
# Witzenhausen&lt;br /&gt;
./flash.sh 51.34131611932317    9.860449433326721    Feinbaeckerei_Ruch_61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Flash-Aktion für Ruch mit Keys ===&lt;br /&gt;
&lt;br /&gt;
# Feinbaeckerei_Ruch_49&lt;br /&gt;
a66db04d6ea85f7394ab5df01bcdbf096726236d0c43059f82cf1d298b7a9782&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Camp2015&amp;diff=9842</id>
		<title>Camp2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Camp2015&amp;diff=9842"/>
		<updated>2015-06-16T10:35:57Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dies ist ein Dorfgründungs-Wiki. Alle potentiellen Bewohner*innen sind aufgerufen, hier fleißig mitzuplanen.&lt;br /&gt;
&lt;br /&gt;
Das Dorf hat im Camp-Wiki eine Seite: https://events.ccc.de/camp/2015/wiki/Village:BigWhoop&lt;br /&gt;
&lt;br /&gt;
== Daten ==&lt;br /&gt;
&#039;&#039;&#039;Termin&#039;&#039;&#039;: 13. - 17. August 2015&lt;br /&gt;
* Presale läuft: noch nicht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links&#039;&#039;&#039;:&lt;br /&gt;
* Wiki der Veranstaltung:  &lt;br /&gt;
http://events.ccc.de/camp/2015/wiki/Main_Page&lt;br /&gt;
&lt;br /&gt;
== Noch offen ==&lt;br /&gt;
* &#039;&#039;&#039;Zelt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Teilnehmer == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Wer !! Wie !! ++&lt;br /&gt;
|-&lt;br /&gt;
| HW|| mal sehen || ...&lt;br /&gt;
|-&lt;br /&gt;
| alex || Rad || &lt;br /&gt;
|-&lt;br /&gt;
| Thoddi || Auto || Fahre schon früher zum Aufbau hin / Will Anhänger ziehen! / Hat noch 1 Platz frei.&lt;br /&gt;
|-&lt;br /&gt;
| piece || Auto || VW Polo, 3 Plätze frei, Beinfreiheit und Stauraum eingeschränkt. Voraussichtlich ab 10.8.&lt;br /&gt;
|-&lt;br /&gt;
| thomas || Auto || bereits voll, ggf. Platz für etwas Gepäck&lt;br /&gt;
|-&lt;br /&gt;
| oliver || Wohnmobil || Leider voll &lt;br /&gt;
|-&lt;br /&gt;
| sg || T.B.D. || hab&#039; noch so gut wie nix geplant&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bringt mit / stellt bei ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Was !! Wie !! ++&lt;br /&gt;
|-&lt;br /&gt;
| Autoanhänger || hat alex || &lt;br /&gt;
|-&lt;br /&gt;
| CEE 3x16A auf 3xSchuko || alex || &lt;br /&gt;
|-&lt;br /&gt;
| 2x Doppelgaskocher (also 4 Kochstellen) || Thoddi || &lt;br /&gt;
|-&lt;br /&gt;
| Switch|| piece || 1x1Gbit 8-Port&lt;br /&gt;
|-&lt;br /&gt;
| Kühlung || || &lt;br /&gt;
|-&lt;br /&gt;
| Tische ||  || &lt;br /&gt;
|-&lt;br /&gt;
| Bänke ||  || &lt;br /&gt;
|-&lt;br /&gt;
| Hängematte || thomas ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9839</id>
		<title>Freifunk/Flashscript</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9839"/>
		<updated>2015-06-11T21:14:04Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# FIRMWARE=&amp;quot;gluon-ffhi-0.4-experimental-20150328-tp-link-tl-wr1043n-nd-v2.bin&amp;quot;&lt;br /&gt;
# FIRMWARE=gluon-ffhi-wr1043.bin&lt;br /&gt;
FIRMWARE=gluon-ffgoe-0.6.5-tp-link-tl-wr1043n-nd-v2.bin&lt;br /&gt;
&lt;br /&gt;
# NAME=ccc-geismar-land&lt;br /&gt;
# LAENGE=9.949756264686584&lt;br /&gt;
# BREITE=51.52233597559833&lt;br /&gt;
# CONTACT=&amp;quot;freifunk@example.com&amp;quot;&lt;br /&gt;
BREITE=$1&lt;br /&gt;
LAENGE=$2&lt;br /&gt;
NAME=$3&lt;br /&gt;
&lt;br /&gt;
configure_gluon()&lt;br /&gt;
{&lt;br /&gt;
   curl &#039;http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
   -H &#039;Accept-Encoding: gzip, deflate&#039; \&lt;br /&gt;
   -H &#039;Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4&#039; \&lt;br /&gt;
   -H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36&#039; \&lt;br /&gt;
   -H &#039;Content-Type: multipart/form-data; boundary=----ffgoe-4711&#039; \&lt;br /&gt;
   -H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8&#039; \&lt;br /&gt;
   -H &#039;Cache-Control: max-age=0&#039; \&lt;br /&gt;
   -H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
   --compressed \&lt;br /&gt;
   --data-binary \&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.submit&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._hostname&amp;quot;\r\n\r\n&#039;&amp;quot;$NAME&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._limit_enabled&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._latitude&amp;quot;\r\n\r\n&#039;&amp;quot;$BREITE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._longitude&amp;quot;\r\n\r\n&#039;&amp;quot;$LAENGE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._contact&amp;quot;\r\n\r\n&#039;&amp;quot;$CONTACT&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711--\r\n&#039;&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl -v &#039;http://192.168.1.1/cgi-bin/luci/gluon-config-mode/reboot&#039; \&lt;br /&gt;
-H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
-H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
-H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&#039; \&lt;br /&gt;
-H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.6.3 (KHTML, like Gecko) Version/8.0.6 Safari/600.6.3&#039; \&lt;br /&gt;
-H &#039;Accept-Language: en-us&#039; \&lt;br /&gt;
-H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
-H &#039;Accept-Encoding: gzip, deflate&#039;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
flash_firmware()&lt;br /&gt;
{&lt;br /&gt;
   curl \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/userRpm/SoftwareUpgradeRpm.htm&#039; \&lt;br /&gt;
   --form &amp;quot;Filename=@$FIRMWARE&amp;quot; -F &#039;Upgrade=Upgrade&#039; \&lt;br /&gt;
   http://192.168.0.1/incoming/Firmware.htm&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl \&lt;br /&gt;
   --max-time 2 \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/incoming/Firmware.htm&#039; \&lt;br /&gt;
   http://192.168.0.1/userRpm/FirmwareUpdateTemp.htm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
wait_for_ping ()&lt;br /&gt;
{&lt;br /&gt;
   ip=$1&lt;br /&gt;
   echo -n &amp;quot;ping $ip &amp;quot;&lt;br /&gt;
   while true; do&lt;br /&gt;
      echo -n &amp;quot;.&amp;quot;&lt;br /&gt;
      ping -c 1 -W 5 $ip &amp;gt;/dev/null&lt;br /&gt;
      if test &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot;; then&lt;br /&gt;
         echo&lt;br /&gt;
         echo Es pingt.&lt;br /&gt;
         return&lt;br /&gt;
      fi&lt;br /&gt;
      sleep 3&lt;br /&gt;
   done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Happy Flashing fuer &#039;$NAME&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo Warten auf TP-Link &lt;br /&gt;
wait_for_ping 192.168.0.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Sende Firmware&lt;br /&gt;
flash_firmware&lt;br /&gt;
&lt;br /&gt;
echo Warten auf Gluon &lt;br /&gt;
wait_for_ping 192.168.1.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Konfiguriere Gluon&lt;br /&gt;
configure_gluon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
while (&amp;lt;&amp;gt;)&lt;br /&gt;
{&lt;br /&gt;
        ($x,$x,$x,$b,$l,$n) = split /;/;&lt;br /&gt;
        printf &amp;quot;./flash.sh %-20s %-20s %20s&amp;quot;, $b, $l, $n;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Goettingen:&lt;br /&gt;
./flash.sh 51.502538568153156   9.902989268302917    Feinbaeckerei_Ruch_59&lt;br /&gt;
./flash.sh 51.52715549198952    9.91589069366455     Feinbaeckerei_Ruch_04&lt;br /&gt;
./flash.sh 51.53313912617003    9.934709072113037    Feinbaeckerei_Ruch_05&lt;br /&gt;
./flash.sh 51.527349063016814   9.950051307678223    Feinbaeckerei_Ruch_06&lt;br /&gt;
./flash.sh 51.53687307599091    9.926013350486755    Feinbaeckerei_Ruch_07&lt;br /&gt;
./flash.sh 51.529912132818495   9.945834875106812    Feinbaeckerei_Ruch_08&lt;br /&gt;
./flash.sh 51.54530420220255    9.930176138877867    Feinbaeckerei_Ruch_09&lt;br /&gt;
./flash.sh 51.53183100338405    9.934076070785522    Feinbaeckerei_Ruch_10&lt;br /&gt;
./flash.sh 51.51381713409578    9.955029487609863    Feinbaeckerei_Ruch_11&lt;br /&gt;
./flash.sh 51.512354884322896   9.955925345420837    Feinbaeckerei_Ruch_12&lt;br /&gt;
./flash.sh 51.54207807128854    9.914828538894653    Feinbaeckerei_Ruch_13&lt;br /&gt;
./flash.sh 51.53039602954396    9.938222765922546    Feinbaeckerei_Ruch_14&lt;br /&gt;
./flash.sh 51.531841014670526   9.937530755996704    Feinbaeckerei_Ruch_15&lt;br /&gt;
./flash.sh 51.53962579189816    9.94264841079712     Feinbaeckerei_Ruch_16&lt;br /&gt;
./flash.sh 51.542595201771135   9.949799180030823    Feinbaeckerei_Ruch_17&lt;br /&gt;
./flash.sh 51.51515248101072    9.94013249874115     Feinbaeckerei_Ruch_18&lt;br /&gt;
./flash.sh 51.528887589675044   9.926066994667051    Feinbaeckerei_Ruch_19&lt;br /&gt;
./flash.sh 51.53467078339061    9.936929941177368    Feinbaeckerei_Ruch_20&lt;br /&gt;
./flash.sh 51.57874306327084    9.759174585342407    Feinbaeckerei_Ruch_21&lt;br /&gt;
./flash.sh 51.58850629232994    9.927461743354797    Feinbaeckerei_Ruch_22&lt;br /&gt;
./flash.sh 51.50285579510823    9.765300750732422    Feinbaeckerei_Ruch_23&lt;br /&gt;
./flash.sh 51.50255526436374    9.761003851890564    Feinbaeckerei_Ruch_24&lt;br /&gt;
./flash.sh 51.51246839397649    10.25948703289032    Feinbaeckerei_Ruch_25&lt;br /&gt;
./flash.sh 51.508946124423126   10.255286693572998   Feinbaeckerei_Ruch_26&lt;br /&gt;
./flash.sh 51.78783373327458    10.062666535377502   Feinbaeckerei_Ruch_27&lt;br /&gt;
./flash.sh 51.82073590612012    9.872143864631653    Feinbaeckerei_Ruch_28&lt;br /&gt;
./flash.sh 51.81830862006357    9.865947961807251    Feinbaeckerei_Ruch_29&lt;br /&gt;
./flash.sh 51.55195257991039    9.871907830238342    Feinbaeckerei_Ruch_30&lt;br /&gt;
./flash.sh 51.431898980502545   9.64473009109497     Feinbaeckerei_Ruch_33&lt;br /&gt;
./flash.sh 51.41698044851287    9.651864767074585    Feinbaeckerei_Ruch_34&lt;br /&gt;
./flash.sh 51.417833545176194   9.651778936386108    Feinbaeckerei_Ruch_35&lt;br /&gt;
./flash.sh 51.41101167200516    9.643405079841614    Feinbaeckerei_Ruch_36&lt;br /&gt;
./flash.sh 51.64851618597645    9.835386872291563    Feinbaeckerei_Ruch_37&lt;br /&gt;
./flash.sh 51.857828585762874   9.9593585729599      Feinbaeckerei_Ruch_53&lt;br /&gt;
./flash.sh 51.70541835968561    9.999339580535889    Feinbaeckerei_Ruch_54&lt;br /&gt;
./flash.sh 51.70633254826029    9.991545081138609    Feinbaeckerei_Ruch_55&lt;br /&gt;
./flash.sh 51.69041970568905    9.983407258987425    Feinbaeckerei_Ruch_56&lt;br /&gt;
./flash.sh 51.63002240144565    9.9363774061203      Feinbaeckerei_Ruch_57&lt;br /&gt;
&lt;br /&gt;
# Hildesheim:&lt;br /&gt;
./flash.sh 52.148958258516465   9.937713146209717    Feinbaeckerei_Ruch_38&lt;br /&gt;
./flash.sh 52.151048416345176   9.973622560501099    Feinbaeckerei_Ruch_39&lt;br /&gt;
./flash.sh 52.154063337297565   9.955195784568787    Feinbaeckerei_Ruch_40&lt;br /&gt;
./flash.sh 52.15090688119581    9.93088960647583     Feinbaeckerei_Ruch_41&lt;br /&gt;
./flash.sh 52.13966492024524    9.939993023872375    Feinbaeckerei_Ruch_42&lt;br /&gt;
./flash.sh 52.15336557899155    9.950260519981384    Feinbaeckerei_Ruch_43&lt;br /&gt;
./flash.sh 52.159276430590616   9.940513372421265    Feinbaeckerei_Ruch_44&lt;br /&gt;
&lt;br /&gt;
# Kasseler Block:&lt;br /&gt;
# Fuldabrueck:&lt;br /&gt;
./flash.sh 51.27328643729277    9.501843452453613    Feinbaeckerei_Ruch_31&lt;br /&gt;
# Harleshausen:&lt;br /&gt;
./flash.sh 51.33653057987049    9.438816905021667    Feinbaeckerei_Ruch_32&lt;br /&gt;
# Hofgeismar:&lt;br /&gt;
./flash.sh 51.494199716235535   9.381396174430847    Feinbaeckerei_Ruch_45&lt;br /&gt;
# Kassel&lt;br /&gt;
./flash.sh 51.289704482241135   9.471845626831055    Feinbaeckerei_Ruch_46&lt;br /&gt;
./flash.sh 51.29184815912083    9.45449709892273     Feinbaeckerei_Ruch_47&lt;br /&gt;
./flash.sh 51.316846975739736   9.496994018554688    Feinbaeckerei_Ruch_48&lt;br /&gt;
./flash.sh 51.3145703464324     9.494735598564148    Feinbaeckerei_Ruch_49&lt;br /&gt;
./flash.sh 51.33396669250336    9.492627382278442    Feinbaeckerei_Ruch_50&lt;br /&gt;
./flash.sh 51.31794333864989    9.49968695640564     Feinbaeckerei_Ruch_51&lt;br /&gt;
./flash.sh 51.313095003491476   9.445066452026367    Feinbaeckerei_Ruch_52&lt;br /&gt;
# Reinhardshagen&lt;br /&gt;
./flash.sh 51.489537041989      9.606696367263794    Feinbaeckerei_Ruch_58&lt;br /&gt;
# Vellmar&lt;br /&gt;
./flash.sh 51.36275442884671    9.468364119529724    Feinbaeckerei_Ruch_60&lt;br /&gt;
# Witzenhausen&lt;br /&gt;
./flash.sh 51.34131611932317    9.860449433326721    Feinbaeckerei_Ruch_61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9834</id>
		<title>Freifunk/Flashscript</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9834"/>
		<updated>2015-06-11T19:55:45Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Achtung!&#039;&#039;&#039; Wenn man sich das Skript hier per Copy&amp;amp;Paste aus&#039;m Firefox kopiert, dann funktioniert es nicht mehr, weil man sich da in Sachen whitespace, linebreaks was versaut.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# FIRMWARE=&amp;quot;gluon-ffhi-0.4-experimental-20150328-tp-link-tl-wr1043n-nd-v2.bin&amp;quot;&lt;br /&gt;
# FIRMWARE=gluon-ffhi-wr1043.bin&lt;br /&gt;
FIRMWARE=gluon-ffgoe-0.6.5-tp-link-tl-wr1043n-nd-v2.bin&lt;br /&gt;
&lt;br /&gt;
# NAME=ccc-geismar-land&lt;br /&gt;
# LAENGE=9.949756264686584&lt;br /&gt;
# BREITE=51.52233597559833&lt;br /&gt;
# CONTACT=&amp;quot;freifunk@example.com&amp;quot;&lt;br /&gt;
BREITE=$1&lt;br /&gt;
LAENGE=$2&lt;br /&gt;
NAME=$3&lt;br /&gt;
&lt;br /&gt;
configure_gluon()&lt;br /&gt;
{&lt;br /&gt;
   curl &#039;http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
   -H &#039;Accept-Encoding: gzip, deflate&#039; \&lt;br /&gt;
   -H &#039;Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4&#039; \&lt;br /&gt;
   -H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36&#039; \&lt;br /&gt;
   -H &#039;Content-Type: multipart/form-data; boundary=----ffgoe-4711&#039; \&lt;br /&gt;
   -H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8&#039; \&lt;br /&gt;
   -H &#039;Cache-Control: max-age=0&#039; \&lt;br /&gt;
   -H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
   --compressed \&lt;br /&gt;
   --data-binary \&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.submit&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._hostname&amp;quot;\r\n\r\n&#039;&amp;quot;$NAME&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._limit_enabled&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._latitude&amp;quot;\r\n\r\n&#039;&amp;quot;$BREITE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._longitude&amp;quot;\r\n\r\n&#039;&amp;quot;$LAENGE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._contact&amp;quot;\r\n\r\n&#039;&amp;quot;$CONTACT&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711--\r\n&#039;&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl -v &#039;http://192.168.1.1/cgi-bin/luci/gluon-config-mode/reboot&#039; \&lt;br /&gt;
-H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
-H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
-H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&#039; \&lt;br /&gt;
-H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.6.3 (KHTML, like Gecko) Version/8.0.6 Safari/600.6.3&#039; \&lt;br /&gt;
-H &#039;Accept-Language: en-us&#039; \&lt;br /&gt;
-H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
-H &#039;Accept-Encoding: gzip, deflate&#039;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
flash_firmware()&lt;br /&gt;
{&lt;br /&gt;
   curl \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/userRpm/SoftwareUpgradeRpm.htm&#039; \&lt;br /&gt;
   --form &amp;quot;Filename=@$FIRMWARE&amp;quot; -F &#039;Upgrade=Upgrade&#039; \&lt;br /&gt;
   http://192.168.0.1/incoming/Firmware.htm&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl \&lt;br /&gt;
   --max-time 2 \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/incoming/Firmware.htm&#039; \&lt;br /&gt;
   http://192.168.0.1/userRpm/FirmwareUpdateTemp.htm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
wait_for_ping ()&lt;br /&gt;
{&lt;br /&gt;
   ip=$1&lt;br /&gt;
   echo -n &amp;quot;ping $ip &amp;quot;&lt;br /&gt;
   while true; do&lt;br /&gt;
      echo -n &amp;quot;.&amp;quot;&lt;br /&gt;
      ping -c 1 -W 5 $ip &amp;gt;/dev/null&lt;br /&gt;
      if test &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot;; then&lt;br /&gt;
         echo&lt;br /&gt;
         echo Es pingt.&lt;br /&gt;
         return&lt;br /&gt;
      fi&lt;br /&gt;
      sleep 3&lt;br /&gt;
   done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Happy Flashing fuer &#039;$NAME&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo Warten auf TP-Link &lt;br /&gt;
wait_for_ping 192.168.0.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Sende Firmware&lt;br /&gt;
flash_firmware&lt;br /&gt;
&lt;br /&gt;
echo Warten auf Gluon &lt;br /&gt;
wait_for_ping 192.168.1.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Konfiguriere Gluon&lt;br /&gt;
configure_gluon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
while (&amp;lt;&amp;gt;)&lt;br /&gt;
{&lt;br /&gt;
        ($x,$x,$x,$b,$l,$n) = split /;/;&lt;br /&gt;
        printf &amp;quot;./flash.sh %-20s %-20s %20s&amp;quot;, $b, $l, $n;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Goettingen:&lt;br /&gt;
# --- START HW&#039;s BLOCK:&lt;br /&gt;
./flash.sh 51.502538568153156   9.902989268302917    Feinbaeckerei_Ruch_59&lt;br /&gt;
./flash.sh 51.52715549198952    9.91589069366455     Feinbaeckerei_Ruch_04&lt;br /&gt;
./flash.sh 51.53313912617003    9.934709072113037    Feinbaeckerei_Ruch_05&lt;br /&gt;
./flash.sh 51.527349063016814   9.950051307678223    Feinbaeckerei_Ruch_06&lt;br /&gt;
./flash.sh 51.53687307599091    9.926013350486755    Feinbaeckerei_Ruch_07&lt;br /&gt;
./flash.sh 51.529912132818495   9.945834875106812    Feinbaeckerei_Ruch_08&lt;br /&gt;
./flash.sh 51.54530420220255    9.930176138877867    Feinbaeckerei_Ruch_09&lt;br /&gt;
./flash.sh 51.53183100338405    9.934076070785522    Feinbaeckerei_Ruch_10&lt;br /&gt;
./flash.sh 51.51381713409578    9.955029487609863    Feinbaeckerei_Ruch_11&lt;br /&gt;
./flash.sh 51.512354884322896   9.955925345420837    Feinbaeckerei_Ruch_12&lt;br /&gt;
./flash.sh 51.54207807128854    9.914828538894653    Feinbaeckerei_Ruch_13&lt;br /&gt;
./flash.sh 51.53039602954396    9.938222765922546    Feinbaeckerei_Ruch_14&lt;br /&gt;
./flash.sh 51.531841014670526   9.937530755996704    Feinbaeckerei_Ruch_15&lt;br /&gt;
./flash.sh 51.53962579189816    9.94264841079712     Feinbaeckerei_Ruch_16&lt;br /&gt;
./flash.sh 51.542595201771135   9.949799180030823    Feinbaeckerei_Ruch_17&lt;br /&gt;
./flash.sh 51.51515248101072    9.94013249874115     Feinbaeckerei_Ruch_18&lt;br /&gt;
./flash.sh 51.528887589675044   9.926066994667051    Feinbaeckerei_Ruch_19&lt;br /&gt;
# --- ENDE HW&#039;s BLOCK&lt;br /&gt;
# --- START hydrox&#039; BLOCK:&lt;br /&gt;
./flash.sh 51.53467078339061    9.936929941177368    Feinbaeckerei_Ruch_20&lt;br /&gt;
./flash.sh 51.57874306327084    9.759174585342407    Feinbaeckerei_Ruch_21&lt;br /&gt;
./flash.sh 51.58850629232994    9.927461743354797    Feinbaeckerei_Ruch_22&lt;br /&gt;
./flash.sh 51.50285579510823    9.765300750732422    Feinbaeckerei_Ruch_23&lt;br /&gt;
./flash.sh 51.50255526436374    9.761003851890564    Feinbaeckerei_Ruch_24&lt;br /&gt;
./flash.sh 51.51246839397649    10.25948703289032    Feinbaeckerei_Ruch_25&lt;br /&gt;
./flash.sh 51.508946124423126   10.255286693572998   Feinbaeckerei_Ruch_26&lt;br /&gt;
./flash.sh 51.78783373327458    10.062666535377502   Feinbaeckerei_Ruch_27&lt;br /&gt;
# --- ENDE hydrox&#039; BLOCK:&lt;br /&gt;
# --- START esgeh&#039;s BLOCK:&lt;br /&gt;
./flash.sh 51.82073590612012    9.872143864631653    Feinbaeckerei_Ruch_28&lt;br /&gt;
./flash.sh 51.81830862006357    9.865947961807251    Feinbaeckerei_Ruch_29&lt;br /&gt;
./flash.sh 51.55195257991039    9.871907830238342    Feinbaeckerei_Ruch_30&lt;br /&gt;
./flash.sh 51.27328643729277    9.501843452453613    Feinbaeckerei_Ruch_31&lt;br /&gt;
./flash.sh 51.33653057987049    9.438816905021667    Feinbaeckerei_Ruch_32&lt;br /&gt;
./flash.sh 51.431898980502545   9.64473009109497     Feinbaeckerei_Ruch_33&lt;br /&gt;
./flash.sh 51.41698044851287    9.651864767074585    Feinbaeckerei_Ruch_34&lt;br /&gt;
./flash.sh 51.417833545176194   9.651778936386108    Feinbaeckerei_Ruch_35&lt;br /&gt;
# --- ENDE esgeh&#039;s BLOCK:&lt;br /&gt;
# --- START moebs BLOCK:&lt;br /&gt;
./flash.sh 51.41101167200516    9.643405079841614    Feinbaeckerei_Ruch_36&lt;br /&gt;
./flash.sh 51.64851618597645    9.835386872291563    Feinbaeckerei_Ruch_37&lt;br /&gt;
./flash.sh 51.857828585762874   9.9593585729599      Feinbaeckerei_Ruch_53&lt;br /&gt;
./flash.sh 51.70541835968561    9.999339580535889    Feinbaeckerei_Ruch_54&lt;br /&gt;
./flash.sh 51.70633254826029    9.991545081138609    Feinbaeckerei_Ruch_55&lt;br /&gt;
./flash.sh 51.69041970568905    9.983407258987425    Feinbaeckerei_Ruch_56&lt;br /&gt;
./flash.sh 51.63002240144565    9.9363774061203      Feinbaeckerei_Ruch_57&lt;br /&gt;
# --- ENDE moebs BLOCK:&lt;br /&gt;
# Hildesheim&lt;br /&gt;
./flash.sh 52.148958258516465   9.937713146209717    Feinbaeckerei_Ruch_38&lt;br /&gt;
./flash.sh 52.151048416345176   9.973622560501099    Feinbaeckerei_Ruch_39&lt;br /&gt;
./flash.sh 52.154063337297565   9.955195784568787    Feinbaeckerei_Ruch_40&lt;br /&gt;
./flash.sh 52.15090688119581    9.93088960647583     Feinbaeckerei_Ruch_41&lt;br /&gt;
./flash.sh 52.13966492024524    9.939993023872375    Feinbaeckerei_Ruch_42&lt;br /&gt;
./flash.sh 52.15336557899155    9.950260519981384    Feinbaeckerei_Ruch_43&lt;br /&gt;
./flash.sh 52.159276430590616   9.940513372421265    Feinbaeckerei_Ruch_44&lt;br /&gt;
&lt;br /&gt;
# Hofgeismar:&lt;br /&gt;
./flash.sh 51.494199716235535   9.381396174430847    Feinbaeckerei_Ruch_45&lt;br /&gt;
# Kassel&lt;br /&gt;
./flash.sh 51.289704482241135   9.471845626831055    Feinbaeckerei_Ruch_46&lt;br /&gt;
./flash.sh 51.29184815912083    9.45449709892273     Feinbaeckerei_Ruch_47&lt;br /&gt;
./flash.sh 51.316846975739736   9.496994018554688    Feinbaeckerei_Ruch_48&lt;br /&gt;
./flash.sh 51.3145703464324     9.494735598564148    Feinbaeckerei_Ruch_49&lt;br /&gt;
./flash.sh 51.33396669250336    9.492627382278442    Feinbaeckerei_Ruch_50&lt;br /&gt;
./flash.sh 51.31794333864989    9.49968695640564     Feinbaeckerei_Ruch_51&lt;br /&gt;
./flash.sh 51.313095003491476   9.445066452026367    Feinbaeckerei_Ruch_52&lt;br /&gt;
# Reinhardshagen&lt;br /&gt;
./flash.sh 51.489537041989      9.606696367263794    Feinbaeckerei_Ruch_58&lt;br /&gt;
# Vellmar&lt;br /&gt;
./flash.sh 51.36275442884671    9.468364119529724    Feinbaeckerei_Ruch_60&lt;br /&gt;
# Witzenhausen&lt;br /&gt;
./flash.sh 51.34131611932317    9.860449433326721    Feinbaeckerei_Ruch_61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9830</id>
		<title>Freifunk/Flashscript</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Freifunk/Flashscript&amp;diff=9830"/>
		<updated>2015-06-11T19:12:02Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# FIRMWARE=&amp;quot;gluon-ffhi-0.4-experimental-20150328-tp-link-tl-wr1043n-nd-v2.bin&amp;quot;&lt;br /&gt;
# FIRMWARE=gluon-ffhi-wr1043.bin&lt;br /&gt;
FIRMWARE=gluon-ffgoe-0.6.5-tp-link-tl-wr1043n-nd-v2.bin&lt;br /&gt;
&lt;br /&gt;
# NAME=ccc-geismar-land&lt;br /&gt;
# LAENGE=9.949756264686584&lt;br /&gt;
# BREITE=51.52233597559833&lt;br /&gt;
# CONTACT=&amp;quot;freifunk@example.com&amp;quot;&lt;br /&gt;
BREITE=$1&lt;br /&gt;
LAENGE=$2&lt;br /&gt;
NAME=$3&lt;br /&gt;
&lt;br /&gt;
configure_gluon()&lt;br /&gt;
{&lt;br /&gt;
   curl &#039;http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
   -H &#039;Accept-Encoding: gzip, deflate&#039; \&lt;br /&gt;
   -H &#039;Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4&#039; \&lt;br /&gt;
   -H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36&#039; \&lt;br /&gt;
   -H &#039;Content-Type: multipart/form-data; boundary=----ffgoe-4711&#039; \&lt;br /&gt;
   -H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8&#039; \&lt;br /&gt;
   -H &#039;Cache-Control: max-age=0&#039; \&lt;br /&gt;
   -H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
   -H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
   --compressed \&lt;br /&gt;
   --data-binary \&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.submit&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._hostname&amp;quot;\r\n\r\n&#039;&amp;quot;$NAME&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._meshvpn&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._limit_enabled&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbi.cbe.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._location&amp;quot;\r\n\r\n1\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._latitude&amp;quot;\r\n\r\n&#039;&amp;quot;$BREITE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._longitude&amp;quot;\r\n\r\n&#039;&amp;quot;$LAENGE&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711\r\nContent-Disposition: form-data; name=&amp;quot;cbid.wizard.1._contact&amp;quot;\r\n\r\n&#039;&amp;quot;$CONTACT&amp;quot;$&#039;\r\n&#039;\&lt;br /&gt;
$&#039;------ffgoe-4711--\r\n&#039;&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl -v &#039;http://192.168.1.1/cgi-bin/luci/gluon-config-mode/reboot&#039; \&lt;br /&gt;
-H &#039;Origin: http://192.168.1.1&#039; \&lt;br /&gt;
-H &#039;Connection: keep-alive&#039; \&lt;br /&gt;
-H &#039;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&#039; \&lt;br /&gt;
-H &#039;User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.6.3 (KHTML, like Gecko) Version/8.0.6 Safari/600.6.3&#039; \&lt;br /&gt;
-H &#039;Accept-Language: en-us&#039; \&lt;br /&gt;
-H &#039;Referer: http://192.168.1.1/cgi-bin/luci&#039; \&lt;br /&gt;
-H &#039;Accept-Encoding: gzip, deflate&#039;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
flash_firmware()&lt;br /&gt;
{&lt;br /&gt;
   curl \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/userRpm/SoftwareUpgradeRpm.htm&#039; \&lt;br /&gt;
   --form &amp;quot;Filename=@$FIRMWARE&amp;quot; -F &#039;Upgrade=Upgrade&#039; \&lt;br /&gt;
   http://192.168.0.1/incoming/Firmware.htm&lt;br /&gt;
&lt;br /&gt;
   sleep 1&lt;br /&gt;
&lt;br /&gt;
   curl \&lt;br /&gt;
   --max-time 2 \&lt;br /&gt;
   --user admin:admin \&lt;br /&gt;
   --user-agent &#039;Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0&#039; \&lt;br /&gt;
   --referer &#039;http://192.168.0.1/incoming/Firmware.htm&#039; \&lt;br /&gt;
   http://192.168.0.1/userRpm/FirmwareUpdateTemp.htm&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
wait_for_ping ()&lt;br /&gt;
{&lt;br /&gt;
   ip=$1&lt;br /&gt;
   echo -n &amp;quot;ping $ip &amp;quot;&lt;br /&gt;
   while true; do&lt;br /&gt;
      echo -n &amp;quot;.&amp;quot;&lt;br /&gt;
      ping -c 1 -W 5 $ip  | grep &#039;1 packets received&#039;&lt;br /&gt;
      if test &amp;quot;$?&amp;quot; = &amp;quot;0&amp;quot;; then&lt;br /&gt;
         echo&lt;br /&gt;
         echo Es pingt.&lt;br /&gt;
         return&lt;br /&gt;
      fi&lt;br /&gt;
      sleep 3&lt;br /&gt;
   done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Happy Flashing fuer &#039;$NAME&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo Warten auf TP-Link &lt;br /&gt;
wait_for_ping 192.168.0.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Sende Firmware&lt;br /&gt;
flash_firmware&lt;br /&gt;
&lt;br /&gt;
echo Warten auf Gluon &lt;br /&gt;
wait_for_ping 192.168.1.1&lt;br /&gt;
sleep 5&lt;br /&gt;
&lt;br /&gt;
echo Konfiguriere Gluon&lt;br /&gt;
configure_gluon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=perl&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
while (&amp;lt;&amp;gt;)&lt;br /&gt;
{&lt;br /&gt;
        ($x,$x,$x,$b,$l,$n) = split /;/;&lt;br /&gt;
        printf &amp;quot;./flash.sh %-20s %-20s %20s&amp;quot;, $b, $l, $n;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Goettingen:&lt;br /&gt;
# --- START HW&#039;s BLOCK:&lt;br /&gt;
./flash.sh 51.502538568153156   9.902989268302917    Feinbaeckerei_Ruch_59&lt;br /&gt;
./flash.sh 51.52715549198952    9.91589069366455     Feinbaeckerei_Ruch_04&lt;br /&gt;
./flash.sh 51.53313912617003    9.934709072113037    Feinbaeckerei_Ruch_05&lt;br /&gt;
./flash.sh 51.527349063016814   9.950051307678223    Feinbaeckerei_Ruch_06&lt;br /&gt;
./flash.sh 51.53687307599091    9.926013350486755    Feinbaeckerei_Ruch_07&lt;br /&gt;
./flash.sh 51.529912132818495   9.945834875106812    Feinbaeckerei_Ruch_08&lt;br /&gt;
./flash.sh 51.54530420220255    9.930176138877867    Feinbaeckerei_Ruch_09&lt;br /&gt;
./flash.sh 51.53183100338405    9.934076070785522    Feinbaeckerei_Ruch_10&lt;br /&gt;
./flash.sh 51.51381713409578    9.955029487609863    Feinbaeckerei_Ruch_11&lt;br /&gt;
./flash.sh 51.512354884322896   9.955925345420837    Feinbaeckerei_Ruch_12&lt;br /&gt;
./flash.sh 51.54207807128854    9.914828538894653    Feinbaeckerei_Ruch_13&lt;br /&gt;
./flash.sh 51.53039602954396    9.938222765922546    Feinbaeckerei_Ruch_14&lt;br /&gt;
./flash.sh 51.531841014670526   9.937530755996704    Feinbaeckerei_Ruch_15&lt;br /&gt;
./flash.sh 51.53962579189816    9.94264841079712     Feinbaeckerei_Ruch_16&lt;br /&gt;
./flash.sh 51.542595201771135   9.949799180030823    Feinbaeckerei_Ruch_17&lt;br /&gt;
./flash.sh 51.51515248101072    9.94013249874115     Feinbaeckerei_Ruch_18&lt;br /&gt;
./flash.sh 51.528887589675044   9.926066994667051    Feinbaeckerei_Ruch_19&lt;br /&gt;
# --- ENDE HW&#039;s BLOCK&lt;br /&gt;
# --- START hydrox&#039; BLOCK:&lt;br /&gt;
./flash.sh 51.53467078339061    9.936929941177368    Feinbaeckerei_Ruch_20&lt;br /&gt;
./flash.sh 51.57874306327084    9.759174585342407    Feinbaeckerei_Ruch_21&lt;br /&gt;
./flash.sh 51.58850629232994    9.927461743354797    Feinbaeckerei_Ruch_22&lt;br /&gt;
./flash.sh 51.50285579510823    9.765300750732422    Feinbaeckerei_Ruch_23&lt;br /&gt;
./flash.sh 51.50255526436374    9.761003851890564    Feinbaeckerei_Ruch_24&lt;br /&gt;
./flash.sh 51.51246839397649    10.25948703289032    Feinbaeckerei_Ruch_25&lt;br /&gt;
./flash.sh 51.508946124423126   10.255286693572998   Feinbaeckerei_Ruch_26&lt;br /&gt;
./flash.sh 51.78783373327458    10.062666535377502   Feinbaeckerei_Ruch_27&lt;br /&gt;
# --- ENDE hydrox&#039; BLOCK:&lt;br /&gt;
# --- START esgeh&#039;s BLOCK:&lt;br /&gt;
./flash.sh 51.82073590612012    9.872143864631653    Feinbaeckerei_Ruch_28&lt;br /&gt;
./flash.sh 51.81830862006357    9.865947961807251    Feinbaeckerei_Ruch_29&lt;br /&gt;
./flash.sh 51.55195257991039    9.871907830238342    Feinbaeckerei_Ruch_30&lt;br /&gt;
./flash.sh 51.27328643729277    9.501843452453613    Feinbaeckerei_Ruch_31&lt;br /&gt;
./flash.sh 51.33653057987049    9.438816905021667    Feinbaeckerei_Ruch_32&lt;br /&gt;
./flash.sh 51.431898980502545   9.64473009109497     Feinbaeckerei_Ruch_33&lt;br /&gt;
./flash.sh 51.41698044851287    9.651864767074585    Feinbaeckerei_Ruch_34&lt;br /&gt;
./flash.sh 51.417833545176194   9.651778936386108    Feinbaeckerei_Ruch_35&lt;br /&gt;
# --- ENDE esgeh&#039;s BLOCK:&lt;br /&gt;
./flash.sh 51.41101167200516    9.643405079841614    Feinbaeckerei_Ruch_36&lt;br /&gt;
./flash.sh 51.64851618597645    9.835386872291563    Feinbaeckerei_Ruch_37&lt;br /&gt;
./flash.sh 51.857828585762874   9.9593585729599      Feinbaeckerei_Ruch_53&lt;br /&gt;
./flash.sh 51.70541835968561    9.999339580535889    Feinbaeckerei_Ruch_54&lt;br /&gt;
./flash.sh 51.70633254826029    9.991545081138609    Feinbaeckerei_Ruch_55&lt;br /&gt;
./flash.sh 51.69041970568905    9.983407258987425    Feinbaeckerei_Ruch_56&lt;br /&gt;
./flash.sh 51.63002240144565    9.9363774061203      Feinbaeckerei_Ruch_57&lt;br /&gt;
&lt;br /&gt;
# Hildesheim&lt;br /&gt;
./flash.sh 52.148958258516465   9.937713146209717    Feinbaeckerei_Ruch_38&lt;br /&gt;
./flash.sh 52.151048416345176   9.973622560501099    Feinbaeckerei_Ruch_39&lt;br /&gt;
./flash.sh 52.154063337297565   9.955195784568787    Feinbaeckerei_Ruch_40&lt;br /&gt;
./flash.sh 52.15090688119581    9.93088960647583     Feinbaeckerei_Ruch_41&lt;br /&gt;
./flash.sh 52.13966492024524    9.939993023872375    Feinbaeckerei_Ruch_42&lt;br /&gt;
./flash.sh 52.15336557899155    9.950260519981384    Feinbaeckerei_Ruch_43&lt;br /&gt;
./flash.sh 52.159276430590616   9.940513372421265    Feinbaeckerei_Ruch_44&lt;br /&gt;
&lt;br /&gt;
# Hofgeismar:&lt;br /&gt;
./flash.sh 51.494199716235535   9.381396174430847    Feinbaeckerei_Ruch_45&lt;br /&gt;
# Kassel&lt;br /&gt;
./flash.sh 51.289704482241135   9.471845626831055    Feinbaeckerei_Ruch_46&lt;br /&gt;
./flash.sh 51.29184815912083    9.45449709892273     Feinbaeckerei_Ruch_47&lt;br /&gt;
./flash.sh 51.316846975739736   9.496994018554688    Feinbaeckerei_Ruch_48&lt;br /&gt;
./flash.sh 51.3145703464324     9.494735598564148    Feinbaeckerei_Ruch_49&lt;br /&gt;
./flash.sh 51.33396669250336    9.492627382278442    Feinbaeckerei_Ruch_50&lt;br /&gt;
./flash.sh 51.31794333864989    9.49968695640564     Feinbaeckerei_Ruch_51&lt;br /&gt;
./flash.sh 51.313095003491476   9.445066452026367    Feinbaeckerei_Ruch_52&lt;br /&gt;
# Reinhardshagen&lt;br /&gt;
./flash.sh 51.489537041989      9.606696367263794    Feinbaeckerei_Ruch_58&lt;br /&gt;
# Vellmar&lt;br /&gt;
./flash.sh 51.36275442884671    9.468364119529724    Feinbaeckerei_Ruch_60&lt;br /&gt;
# Witzenhausen&lt;br /&gt;
./flash.sh 51.34131611932317    9.860449433326721    Feinbaeckerei_Ruch_61&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Benutzer:SebastianG&amp;diff=9793</id>
		<title>Benutzer:SebastianG</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Benutzer:SebastianG&amp;diff=9793"/>
		<updated>2015-06-03T08:41:29Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;...oder auch kreativerweise nur &amp;lt;code&amp;gt;sg&amp;lt;/code&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
=== Geek Knoff-Hoff Profil ===&lt;br /&gt;
&lt;br /&gt;
Ausgeprägtes Interesse:&lt;br /&gt;
&lt;br /&gt;
* Digitale Signalverarbeitung (u.a. [[TT_Digitale_Filter|Filter]], z.B. für [https://code.google.com/p/audio-pwm/ Noise Shaping])&lt;br /&gt;
* Klangsynthese (additiv und subtraktiv)&lt;br /&gt;
* Kompressionsverfahren für Bild, Video und Ton&lt;br /&gt;
* Kodierung (CRC, [https://code.google.com/p/tiny-fecc/ Reed-Solomon], RAID 6, Faltungscodes, LDPC)&lt;br /&gt;
* Kryptographie&lt;br /&gt;
* [[TT_Modern_C++|C++]]&lt;br /&gt;
* [[Trägheitsnavigation]]&lt;br /&gt;
* [http://www.rust-lang.org/ Rust]&lt;br /&gt;
&lt;br /&gt;
Und sonst noch:&lt;br /&gt;
&lt;br /&gt;
* Matlab/GNU Octave&lt;br /&gt;
* ein bisschen Python&lt;br /&gt;
* [[Pic32_Assembler|MIPS32 Assembler]]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Software_Defined_Radio Software Defined Radio]&lt;br /&gt;
&lt;br /&gt;
Planlos bei:&lt;br /&gt;
&lt;br /&gt;
* Hardware&lt;br /&gt;
* Elektronik&lt;br /&gt;
* Web-Kram&lt;br /&gt;
&lt;br /&gt;
=== Hat Lust auf ===&lt;br /&gt;
&lt;br /&gt;
* Leuten die Programmiersprache [http://rust-lang.org/ Rust] zeigen und beibringen&lt;br /&gt;
* mit SDRs spielen und den Demodulations- und Dekodierungskram selbst in Software implementieren. Erst mal AM, FM, dann auf jeden Fall noch was einfaches, digitales, wie z.B. WSPR.&lt;br /&gt;
* Mal für [[Trägheitsnavigation]] gescheite Simulationen durchführen, damit man mal die Auswirkungen diverser Fehlerquellen testen kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dies und das ===&lt;br /&gt;
&lt;br /&gt;
Bücher, die man sich von mir ausleihen kann, wenn man mir den Eindruck vermitteln kann, dass sie gut behandelt werden:&lt;br /&gt;
&lt;br /&gt;
* Die C++ Programmiersprache (Stroustrup, Übersetzung der &amp;quot;special edition&amp;quot;)&lt;br /&gt;
* Effective C++ (Meyers, 3. Auflage, gerade Verliehen an defnull)&lt;br /&gt;
* C++ Coding Standards (Sutter &amp;amp; Alexandrescu)&lt;br /&gt;
* Modern C++ Design (Alexandrescu)&lt;br /&gt;
* C++ Templates: The Complete Guide (Vandervoorde &amp;amp; Josuttis)&lt;br /&gt;
* The Design and Evolution of C++ (Stroustrup)&lt;br /&gt;
* Accellerated C++ (Koenig &amp;amp; Moo)&lt;br /&gt;
* C++ Primer (Lippman &amp;amp; Lajoie &amp;amp; Moo, die aktuelle 5. Auflage!!!)&lt;br /&gt;
&lt;br /&gt;
Nachfragen lohnt sich bestimmt!&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Benutzer:SebastianG&amp;diff=9792</id>
		<title>Benutzer:SebastianG</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Benutzer:SebastianG&amp;diff=9792"/>
		<updated>2015-06-03T08:40:45Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;...oder auch kreativerweise nur &amp;lt;code&amp;gt;sg&amp;lt;/code&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
=== Geek Knoff-Hoff Profil ===&lt;br /&gt;
&lt;br /&gt;
Ausgeprägtes Interesse:&lt;br /&gt;
&lt;br /&gt;
* Digitale Signalverarbeitung (u.a. [[TT_Digitale_Filter|Filter]], z.B. für [https://code.google.com/p/audio-pwm/ Noise Shaping])&lt;br /&gt;
* Klangsynthese (additiv und subtraktiv)&lt;br /&gt;
* Kompressionsverfahren für Bild, Video und Ton&lt;br /&gt;
* Kodierung (CRC, [https://code.google.com/p/tiny-fecc/ Reed-Solomon], RAID 6, Faltungscodes, LDPC)&lt;br /&gt;
* Kryptographie&lt;br /&gt;
* [[TT_Modern_C++|C++]]&lt;br /&gt;
* [[Trägheitsnavigation]]&lt;br /&gt;
* [http://www.rust-lang.org/ Rust]&lt;br /&gt;
&lt;br /&gt;
Und sonst noch:&lt;br /&gt;
&lt;br /&gt;
* Matlab/GNU Octave&lt;br /&gt;
* ein bisschen Python&lt;br /&gt;
* [[Pic32_Assembler|MIPS32 Assembler]]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Software_Defined_Radio Software Defined Radio]&lt;br /&gt;
&lt;br /&gt;
Planlos bei:&lt;br /&gt;
&lt;br /&gt;
* Hardware&lt;br /&gt;
* Elektronik&lt;br /&gt;
* Web-Kram&lt;br /&gt;
&lt;br /&gt;
=== Hat Lust auf ===&lt;br /&gt;
&lt;br /&gt;
* Leuten die Programmiersprache [http://rust-lang.org/ Rust] zeigen und beibringen&lt;br /&gt;
* mit SDRs spielen und den Demodulations- und Dekodierungskram selbst in Software implementieren. Erst mal AM, FM, dann auf jeden Fall noch was einfaches, digitales, wie z.B. WSPR.&lt;br /&gt;
* Mal für [[Trägheitsnavigation]] gescheite Simulationen durchführen, damit man mal die Auswirkungen diverser Fehlerquellen testen kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dies und das ===&lt;br /&gt;
&lt;br /&gt;
Bücher, die man sich von mir ausleihen kann, wenn man mir den Eindruck vermitteln kann, dass sie gut behandelt werden:&lt;br /&gt;
&lt;br /&gt;
* Die C++ Programmiersprache (Stroustrup, Übersetzung der &amp;quot;special edition&amp;quot;)&lt;br /&gt;
* Effective C++ (Meyers, 3. Auflage)&lt;br /&gt;
* C++ Coding Standards (Sutter &amp;amp; Alexandrescu)&lt;br /&gt;
* Modern C++ Design (Alexandrescu)&lt;br /&gt;
* C++ Templates: The Complete Guide (Vandervoorde &amp;amp; Josuttis)&lt;br /&gt;
* The Design and Evolution of C++ (Stroustrup)&lt;br /&gt;
* Accellerated C++ (Koenig &amp;amp; Moo)&lt;br /&gt;
* C++ Primer (Lippman &amp;amp; Lajoie &amp;amp; Moo, die aktuelle 5. Auflage!!!)&lt;br /&gt;
&lt;br /&gt;
Nachfragen lohnt sich bestimmt!&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Freifunk/0x100-Party&amp;diff=9789</id>
		<title>Freifunk/0x100-Party</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Freifunk/0x100-Party&amp;diff=9789"/>
		<updated>2015-06-02T18:15:06Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Party-Planungstabelle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==0x100 Nodes Party==&lt;br /&gt;
&lt;br /&gt;
===Die Göttinger Freifunkinitiative gibt sich die Ehre zur 0x100 Nodes Party einzuladen. ===&lt;br /&gt;
&lt;br /&gt;
0x100 bedeutet, dass wir seit Mitte Mai ständig mehr als 256 Freifunk Router Online haben. Das ist eine erstaunliche Entwicklung über die wir uns freuen und das wollen wir mit Euch feiern:&lt;br /&gt;
&lt;br /&gt;
Am Mittwoch, 3.6.2015 ab 18:00 im Vereinshaus des Turn- und Wassersportverein von 1861 am Göttinger Kiessee. Auf der Freifunkkarte ist das gut vermaschte Vereinshaus hier zu finden:&lt;br /&gt;
&lt;br /&gt;
https://cccgoe.de/map/geomap.html#lat=51.51923&amp;amp;lon=9.919449&lt;br /&gt;
&lt;br /&gt;
Würstchen (Schweinefleisch) und Getränke gibt es zum Selbstkostenpreis vor Ort. Anderes Grillgut darf gerne mitgebracht werden.&lt;br /&gt;
&lt;br /&gt;
Wer etwas für alle mitbringen möchte, bitte hier eintragen:&lt;br /&gt;
Um Anmeldungen zur Party wird gebeten:&lt;br /&gt;
&lt;br /&gt;
===Party-Planungstabelle===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Wer kommt !! Bringt was mit (optional)&lt;br /&gt;
|-&lt;br /&gt;
|  || Getränke müssen vor Ort gekauft werden&lt;br /&gt;
|-&lt;br /&gt;
| Frank || Würstchen, Holzkohle, Ketchup, Senf&lt;br /&gt;
|-&lt;br /&gt;
| kjo     ||&lt;br /&gt;
|-&lt;br /&gt;
| Dirk || Gurken (komme aber etwas später...)&lt;br /&gt;
|-&lt;br /&gt;
| Alex || &lt;br /&gt;
|-&lt;br /&gt;
| Emzy || Knabberkram &lt;br /&gt;
|-&lt;br /&gt;
| birko || &lt;br /&gt;
|-&lt;br /&gt;
| esgeh ||&lt;br /&gt;
|-&lt;br /&gt;
|  ||&lt;br /&gt;
|-&lt;br /&gt;
|  ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9699</id>
		<title>Kuschelig2.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9699"/>
		<updated>2015-04-02T15:33:06Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* TODO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kuschelig 2.0 ist jetzt im Testbetrieb und ersetzt damit die [[Kuschelig|alte Heizungssteuerung]]. Sie läuft auf einem Raspberry Pi.&lt;br /&gt;
Zur Ansteuerung der Thermostate und zum Auslesen der Temperatursensoren werden Linux Kernelmodule für &lt;br /&gt;
Onewire verwendet. Die Steuerung ist weiterhin mit einem Jabber-Bot möglich.&lt;br /&gt;
Dieser läuft direkt auf dem Raspberry Pi und ist mit SleekXMPP in Python implementiert.&lt;br /&gt;
&lt;br /&gt;
== Heizungssteuerung über Chat-Bot ==&lt;br /&gt;
&lt;br /&gt;
Die Heizung kann über den Jabber bot mit der Jabber ID &#039;&#039;&#039;nokbot@cccgoe.de&#039;&#039;&#039; oder alternativ aus dem MUC (&#039;&#039;&#039;heizung&#039;&#039;&#039;) gesteuert werden. &lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Kommandos beim Heizungs-Bot sind folgende:&lt;br /&gt;
&lt;br /&gt;
* help – gibt Informationen zu einem Kommando&lt;br /&gt;
* status – gibt die aktuelle Raumtemperatur an und Einträge im Heizplan, falls vorhanden&lt;br /&gt;
* kuschelig – Einträge zum Heizplan hinzufügen&lt;br /&gt;
* kuschdel – Einträge aus dem Heizplan entfernen&lt;br /&gt;
&lt;br /&gt;
Wenn man es einfach nur warm haben will, so schnell es nur geht, kann &amp;lt;code&amp;gt;kuschelig&amp;lt;/code&amp;gt; ohne Parameter aufgerufen werden. Das ist dann äquivalent zu &amp;lt;code&amp;gt;kuschelig on&amp;lt;/code&amp;gt;. Dementsprechend gibt es auch &amp;lt;code&amp;gt;kuschelig off&amp;lt;/code&amp;gt;. Statt on/off lässt sich auch eine Temperatur zwischen 17-24 Grad Celsius angeben. Diese Befehle ohne eine Zeitangabe bedeuten immer &amp;quot;so schnell wie möglich&amp;quot; und überschreiben gegebenenfalls eine schon andere vorhandene Vorgabe:&lt;br /&gt;
&lt;br /&gt;
Wenn man sich entschließt, zu einer bestimmten Uhrzeit heute oder morgen im Noklab zu erscheinen, kann das kuschelig-Kommando noch um diese Zeit ergänzt werden. Wird zum Beispiel folgender Befehl eingegeben&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00&lt;br /&gt;
&lt;br /&gt;
dann versucht das Heizsystem die gewünschte Temperatur von 21°C bis 19 Uhr zu erreichen. Dazu muss dieses Ziel allerdings früh genug bekannt sein. Andere Tage lassen sich auch angeben:&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00 tomorrow&lt;br /&gt;
 !kuschelig 20 20:00 2015-03-03&lt;br /&gt;
&lt;br /&gt;
Über das status-Kommando lässt sich die aktuelle Raumtemperatur und eine Liste der Einträge, wann welche Temperatur erreicht werden soll, abfragen:&lt;br /&gt;
&lt;br /&gt;
 !status&lt;br /&gt;
&lt;br /&gt;
Ohne weitere Optionen werden aber nur maximal die ersten drei Einträge angezeigt. Mit&lt;br /&gt;
&lt;br /&gt;
 !status all&lt;br /&gt;
&lt;br /&gt;
bekommt man dann alle Einträge des Heizplans zu sehen.&lt;br /&gt;
&lt;br /&gt;
Zum Löschen der Einträge kann das Kommando &amp;lt;code&amp;gt;kuschdel&amp;lt;/code&amp;gt; benutzt werden. Es erwartet einen oder mehrere Indizes für die zu löschenden Einträge als einen Parameter. Beispiel:&lt;br /&gt;
&lt;br /&gt;
 !kuschdel 1&lt;br /&gt;
 !kuschdel 2,3&lt;br /&gt;
&lt;br /&gt;
== Statusanzeige per Ampel ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ampel2.jpg|thumb|50px]]&lt;br /&gt;
Im Space befindet sich im Regal die &amp;quot;Ampel&amp;quot; mit aktuell fünf Lampen. Die oberen zwei davon zeigen den Status der Heizung an. Wenn alle Lampen aus sind, soll nur die Basis-Temperatur (17°C) gehalten werden. Wenn eine der beiden Lampen an ist, ist die Heizung aktiv. Die obere, grüne Lampe leuchtet, wenn die Raumtemperatur größer oder gleich der Soll-Temperatur ist. Die gelbe Lampe darunter leuchtet, wenn die Soll-Temperatur noch nicht erreucht wurde und noch weiter geheizt werden muss.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Segment !! leuchtet, falls…&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #44FF44;&amp;quot;| 1. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;lt;= now&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #FFDD44;&amp;quot;| 2. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;gt; now&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Folgende Hardware ist im Einsatz:&lt;br /&gt;
&lt;br /&gt;
=== Thermostat ===&lt;br /&gt;
&lt;br /&gt;
An der Heizung ist ein digitaler Thermostat, bei dem eine Zieltemperatur über ein Rad eingestellt werden kann. Dieser sollte im Modus &amp;quot;Manu&amp;quot; für &amp;quot;manuell&amp;quot; bleiben. Der Modus &amp;quot;Auto&amp;quot; ist nämlich dazu da, per Zeitschaltung verschiedene Temperaturen anzufahren. Das erfordert allerdings, dass man den auch richtig programmiert. Es passt auch nicht ganz zu unseren Gewohnheiten, weil nicht immer jemand da ist und wenn doch, dann vielleicht auch mal bis spät in die Nacht.&lt;br /&gt;
&lt;br /&gt;
Das Thermostat ist gleichzeitig ein 1-Wire-Endgerät, worüber man für 5 Minuten das Ventil voll aufdrehen kann (&amp;quot;boost&amp;quot;). Ziel von Kuschelig 2.0 ist es, über diese Boost-Funktion und in der Wohnung verteilte 1-Wire-Temperatursensoren die Regelung selbst zu machen, so dass man schon bevor man in den Space reingeht, die Temperatur über einen Chat-Bot erfragen und beinflussen kann. Im Winter soll man also, bevor man noch in den Raum reingeht, die Zieltemperatur einstellen können, damit man sich hier nicht erst einen abfrieren muss. Damit nicht immer geheizt wird, sollte aber die Zieltemperatur beim Thermostat selbst bei 17° liegen.&lt;br /&gt;
&lt;br /&gt;
Funktioniert das System mal gerade nicht, kann immer noch direkt am Thermostat die Zieltemperatur per Rad eingestellt werden. Man darf dann nicht vergessen, das wieder runter auf 17° zu stellen.&lt;br /&gt;
&lt;br /&gt;
Die 17°, die wir da beim Thermostat eingestellt haben, ist also die Mindesttemperatur, die wir nicht unterschreiten wollen, da es sonst mit der Luftfeuchtigkeit und Schimmel Probleme geben könnte.&lt;br /&gt;
&lt;br /&gt;
=== Elektronik ===&lt;br /&gt;
&lt;br /&gt;
Die Heizung wird von einem Raspberry-Pi über Onewire gesteuert dabei werden die Sensoren und das Thermostat verwendet die schon &lt;br /&gt;
bei [[Kuschelig]] zum Einsatz kamen.&lt;br /&gt;
Sowohl das Thermostat und die Sensoren als auch der Raspberry-Pi werden über die 5-Volt und Masse Leitung der Onewire-Verbindung mit Strom versorgt.&lt;br /&gt;
&lt;br /&gt;
=== Sensoren ===&lt;br /&gt;
&lt;br /&gt;
Die One-Wire Sensoren mit ihren IDs, die überall im Space verteilt sind:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!   ID              !!  Ort  &lt;br /&gt;
|-&lt;br /&gt;
|   10-00080181e1cf ||  Küche: Heizung Vorlauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dcbf7e ||  Küche: Heizung Rücklauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dd1380 ||  Heizung Rücklauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-00080200db39 ||  Heizung Vorlauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-0008020165f9 ||  Küche: an der Decke&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFccbb;&amp;quot;|   22-0000000ed18a ||style=&amp;quot;background-color:#FFccbb;&amp;quot;|  beim Noklab-Gemälde (unzuverlässig)&lt;br /&gt;
|-&lt;br /&gt;
|   28-000001c75bf1 ||  in der Mitte oben am großen Fenster&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-000001c77c5e ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  im Spacemaster-Regal neben der Pumpe&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-00000558acfa ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  an der Decke&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die rosa hervorgehobenen Sensoren werden für die Bestimmung der Raumtemperatur aktuell verwendet.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise der Software ==&lt;br /&gt;
&lt;br /&gt;
Türstatus-, Sensorabfrage und -Logging sowie das Auslösen der Boost-Funktion des Heizungsventils geschieht über die Skripte auf &#039;&#039;&#039;pyro&#039;&#039;&#039;, die in &amp;lt;code&amp;gt;/root/pyro/heizung/&amp;lt;/code&amp;gt; liegen, von &amp;lt;code&amp;gt;/bin&amp;lt;/code&amp;gt; aus verlinkt sind und über die crontab vom Benutzer root regelmäßig gestartet werden. Die aktuelle Raumtemperatur wird im Moment als Minimum zweier Sensoren in Raum01 ermittelt, wobei „Ausreißer“ (wenn ein Sensor z.B. mal gerade 85° sagt) rausgefiltert werden. Diese Skripte stehen unter Versionskontrolle: git.cccgoe.de.&lt;br /&gt;
&lt;br /&gt;
Ob die Boost-Funktion der Heizung ausgelöst werden soll oder nicht, entscheidet das regelmäßig laufende &amp;lt;code&amp;gt;boostiftoocold&amp;lt;/code&amp;gt;-Skript. Dieses vergleicht eine Ist-Temperatur mit einer on-the-fly bestimmten Soll-Temperatur, die das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript berechnet; denn das verwaltet all die Vorgaben und kann bestimmen welche Temperatur wann mindestens erreicht sein muss, damit die Ziele erfüllt werden können.&lt;br /&gt;
&lt;br /&gt;
Auf &#039;&#039;&#039;pyro&#039;&#039;&#039; läuft auch der XMPP-Bot unter dem User &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt;. Der Bot wird aktuell automatisch nach dem Booten über &amp;lt;code&amp;gt;cron&amp;lt;/code&amp;gt; gestartet. Dessen Python-Code liegt im Heimverzeichnis von &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt; und steht unter Versionskontrolle (BitBucket-Projekt von defnull).&lt;br /&gt;
&lt;br /&gt;
Der Chat-Bot selbst macht gar nicht viel. Er liest die aktuelle Temperatur von &amp;lt;code&amp;gt;/var/therm/now&amp;lt;/code&amp;gt; und ruft das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript auf, um die Temperaturen und Zeiten festzulegen und anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
Diejenigen, die Änderungen an dem Jabber Bot vornehmen wollen, fragen defnull am besten nach Schreibzugriff auf das entsprechende git Repo. Nach Änderungen an diesem Repo kann man dem Bot per &amp;quot;reload&amp;quot; sagen, dass er sich neu starten soll. Dabei updatet er sich auch.&lt;br /&gt;
&lt;br /&gt;
=== Abschaltautomatiken ===&lt;br /&gt;
&lt;br /&gt;
Wir wollen nicht umsonst heizen. Deswegen gibt es zwei Automatiken, die die Heizung abschalten können, ohne dabei zukünftige Heizpläne zu beeinflussen:&lt;br /&gt;
&lt;br /&gt;
* Fall „Keiner ist gekommen“: Wenn die Zeit eines bestimmten Temperatur-Ziels erreicht wurde, die Wohnungstür aber noch geschlossen ist, wird automatisch ein Abschalt-Event für 2 Stunden später eingefügt (quasi &amp;lt;code&amp;gt;!kuschelig off 2h&amp;lt;/code&amp;gt;). Kommt man also etwas später und möchte es es warm halten, muss man manuell dieses Abschalt-Event entfernen, damit die Heizung nicht einfach ausgeht. Ja, das ist suboptimal und könnte noch verbessert werden.&lt;br /&gt;
* Fall „Keiner ist mehr da“: Wenn das Heizsystem mitbekommt, dass die Tür von einem offenen in den geschlossenen Zustand wechselt, dann wird automatisch quasi ein &amp;lt;code&amp;gt;!kuschelig off&amp;lt;/code&amp;gt; ausgelöst.&lt;br /&gt;
&lt;br /&gt;
Damit das mit der Türstatusabfrage klappt, muss auf &#039;&#039;&#039;brickme&#039;&#039;&#039; der entsprechende Türstatus-Abfrage Dienst laufen.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* Das Anbinden der Heizung in der Küche, könnte das Heizen beschleunigen. Bisher schaffen wir nur etwa 0,7°C pro Stunde auf Bauchnabelhöhe. An der Decke wird&#039;s natürlich schneller warm.&lt;br /&gt;
* Sdx hat freundlicherweise einen Sensor für das Fenster gebastelt, mit dem wie messen können, ob gelüftet wird oder nicht. Es ist noch nicht ganz klar, wie der an pyro angebunden werden kann und ob der Kernel diese Art von 1wire-Gerät schon unterstützt. Die Idee ist jedenfalls, solange nicht zu boosten, bis das Fenster wieder zu ist, damit möglichst wenig Wärme direkt nach draußen abhaut.&lt;br /&gt;
* Der Bot fliegt regelmäßig aus dem Chat raus, ist dann aber noch direkt erreichbar. Bisher hatten unsere Gegenmaßnahmen keinen Erfolg. Das kann doch nicht so schwer sein!&lt;br /&gt;
* schedule.py könnte noch angepasst werden: Das Zuspät-Kommen wird derzeit mit einem automatisch generierten Abschalt-Eintrag für 2 Stunden später bestraft. Man muss also dran denken, das aus dem Heizplan zu löschen, wenn man später kommt. Besser wäre natürlich, dieses Event automatisch zu löschen, wenn die Tür aufgeht. Dazu bräuchte man wahrscheinlich extra Flags je Heizplan-Eintrag. Z.B. ein &amp;quot;Lösch mich automatisch, wenn die Tür aufgeht&amp;quot;-Flag.&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9693</id>
		<title>Kuschelig2.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9693"/>
		<updated>2015-03-26T14:28:03Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kuschelig 2.0 ist jetzt im Testbetrieb und ersetzt damit die [[Kuschelig|alte Heizungssteuerung]]. Sie läuft auf einem Raspberry Pi.&lt;br /&gt;
Zur Ansteuerung der Thermostate und zum Auslesen der Temperatursensoren werden Linux Kernelmodule für &lt;br /&gt;
Onewire verwendet. Die Steuerung ist weiterhin mit einem Jabber-Bot möglich.&lt;br /&gt;
Dieser läuft direkt auf dem Raspberry Pi und ist mit SleekXMPP in Python implementiert.&lt;br /&gt;
&lt;br /&gt;
== Heizungssteuerung über Chat-Bot ==&lt;br /&gt;
&lt;br /&gt;
Die Heizung kann über den Jabber bot mit der Jabber ID &#039;&#039;&#039;nokbot@cccgoe.de&#039;&#039;&#039; oder alternativ aus dem MUC (&#039;&#039;&#039;heizung&#039;&#039;&#039;) gesteuert werden. &lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Kommandos beim Heizungs-Bot sind folgende:&lt;br /&gt;
&lt;br /&gt;
* help – gibt Informationen zu einem Kommando&lt;br /&gt;
* status – gibt die aktuelle Raumtemperatur an und Einträge im Heizplan, falls vorhanden&lt;br /&gt;
* kuschelig – Einträge zum Heizplan hinzufügen&lt;br /&gt;
* kuschdel – Einträge aus dem Heizplan entfernen&lt;br /&gt;
&lt;br /&gt;
Wenn man es einfach nur warm haben will, so schnell es nur geht, kann &amp;lt;code&amp;gt;kuschelig&amp;lt;/code&amp;gt; ohne Parameter aufgerufen werden. Das ist dann äquivalent zu &amp;lt;code&amp;gt;kuschelig on&amp;lt;/code&amp;gt;. Dementsprechend gibt es auch &amp;lt;code&amp;gt;kuschelig off&amp;lt;/code&amp;gt;. Statt on/off lässt sich auch eine Temperatur zwischen 17-24 Grad Celsius angeben. Diese Befehle ohne eine Zeitangabe bedeuten immer &amp;quot;so schnell wie möglich&amp;quot; und überschreiben gegebenenfalls eine schon andere vorhandene Vorgabe:&lt;br /&gt;
&lt;br /&gt;
Wenn man sich entschließt, zu einer bestimmten Uhrzeit heute oder morgen im Noklab zu erscheinen, kann das kuschelig-Kommando noch um diese Zeit ergänzt werden. Wird zum Beispiel folgender Befehl eingegeben&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00&lt;br /&gt;
&lt;br /&gt;
dann versucht das Heizsystem die gewünschte Temperatur von 21°C bis 19 Uhr zu erreichen. Dazu muss dieses Ziel allerdings früh genug bekannt sein. Andere Tage lassen sich auch angeben:&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00 tomorrow&lt;br /&gt;
 !kuschelig 20 20:00 2015-03-03&lt;br /&gt;
&lt;br /&gt;
Über das status-Kommando lässt sich die aktuelle Raumtemperatur und eine Liste der Einträge, wann welche Temperatur erreicht werden soll, abfragen:&lt;br /&gt;
&lt;br /&gt;
 !status&lt;br /&gt;
&lt;br /&gt;
Ohne weitere Optionen werden aber nur maximal die ersten drei Einträge angezeigt. Mit&lt;br /&gt;
&lt;br /&gt;
 !status all&lt;br /&gt;
&lt;br /&gt;
bekommt man dann alle Einträge des Heizplans zu sehen.&lt;br /&gt;
&lt;br /&gt;
Zum Löschen der Einträge kann das Kommando &amp;lt;code&amp;gt;kuschdel&amp;lt;/code&amp;gt; benutzt werden. Es erwartet einen oder mehrere Indizes für die zu löschenden Einträge als einen Parameter. Beispiel:&lt;br /&gt;
&lt;br /&gt;
 !kuschdel 1&lt;br /&gt;
 !kuschdel 2,3&lt;br /&gt;
&lt;br /&gt;
== Statusanzeige per Ampel ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ampel2.jpg|thumb|50px]]&lt;br /&gt;
Im Space befindet sich im Regal die &amp;quot;Ampel&amp;quot; mit aktuell fünf Lampen. Die oberen zwei davon zeigen den Status der Heizung an. Wenn alle Lampen aus sind, soll nur die Basis-Temperatur (17°C) gehalten werden. Wenn eine der beiden Lampen an ist, ist die Heizung aktiv. Die obere, grüne Lampe leuchtet, wenn die Raumtemperatur größer oder gleich der Soll-Temperatur ist. Die gelbe Lampe darunter leuchtet, wenn die Soll-Temperatur noch nicht erreucht wurde und noch weiter geheizt werden muss.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Segment !! leuchtet, falls…&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #44FF44;&amp;quot;| 1. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;lt;= now&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #FFDD44;&amp;quot;| 2. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;gt; now&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Folgende Hardware ist im Einsatz:&lt;br /&gt;
&lt;br /&gt;
=== Thermostat ===&lt;br /&gt;
&lt;br /&gt;
An der Heizung ist ein digitaler Thermostat, bei dem eine Zieltemperatur über ein Rad eingestellt werden kann. Dieser sollte im Modus &amp;quot;Manu&amp;quot; für &amp;quot;manuell&amp;quot; bleiben. Der Modus &amp;quot;Auto&amp;quot; ist nämlich dazu da, per Zeitschaltung verschiedene Temperaturen anzufahren. Das erfordert allerdings, dass man den auch richtig programmiert. Es passt auch nicht ganz zu unseren Gewohnheiten, weil nicht immer jemand da ist und wenn doch, dann vielleicht auch mal bis spät in die Nacht.&lt;br /&gt;
&lt;br /&gt;
Das Thermostat ist gleichzeitig ein 1-Wire-Endgerät, worüber man für 5 Minuten das Ventil voll aufdrehen kann (&amp;quot;boost&amp;quot;). Ziel von Kuschelig 2.0 ist es, über diese Boost-Funktion und in der Wohnung verteilte 1-Wire-Temperatursensoren die Regelung selbst zu machen, so dass man schon bevor man in den Space reingeht, die Temperatur über einen Chat-Bot erfragen und beinflussen kann. Im Winter soll man also, bevor man noch in den Raum reingeht, die Zieltemperatur einstellen können, damit man sich hier nicht erst einen abfrieren muss. Damit nicht immer geheizt wird, sollte aber die Zieltemperatur beim Thermostat selbst bei 17° liegen.&lt;br /&gt;
&lt;br /&gt;
Funktioniert das System mal gerade nicht, kann immer noch direkt am Thermostat die Zieltemperatur per Rad eingestellt werden. Man darf dann nicht vergessen, das wieder runter auf 17° zu stellen.&lt;br /&gt;
&lt;br /&gt;
Die 17°, die wir da beim Thermostat eingestellt haben, ist also die Mindesttemperatur, die wir nicht unterschreiten wollen, da es sonst mit der Luftfeuchtigkeit und Schimmel Probleme geben könnte.&lt;br /&gt;
&lt;br /&gt;
=== Elektronik ===&lt;br /&gt;
&lt;br /&gt;
Die Heizung wird von einem Raspberry-Pi über Onewire gesteuert dabei werden die Sensoren und das Thermostat verwendet die schon &lt;br /&gt;
bei [[Kuschelig]] zum Einsatz kamen.&lt;br /&gt;
Sowohl das Thermostat und die Sensoren als auch der Raspberry-Pi werden über die 5-Volt und Masse Leitung der Onewire-Verbindung mit Strom versorgt.&lt;br /&gt;
&lt;br /&gt;
=== Sensoren ===&lt;br /&gt;
&lt;br /&gt;
Die One-Wire Sensoren mit ihren IDs, die überall im Space verteilt sind:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!   ID              !!  Ort  &lt;br /&gt;
|-&lt;br /&gt;
|   10-00080181e1cf ||  Küche: Heizung Vorlauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dcbf7e ||  Küche: Heizung Rücklauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dd1380 ||  Heizung Rücklauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-00080200db39 ||  Heizung Vorlauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-0008020165f9 ||  Küche: an der Decke&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFccbb;&amp;quot;|   22-0000000ed18a ||style=&amp;quot;background-color:#FFccbb;&amp;quot;|  beim Noklab-Gemälde (unzuverlässig)&lt;br /&gt;
|-&lt;br /&gt;
|   28-000001c75bf1 ||  in der Mitte oben am großen Fenster&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-000001c77c5e ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  im Spacemaster-Regal neben der Pumpe&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-00000558acfa ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  an der Decke&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die rosa hervorgehobenen Sensoren werden für die Bestimmung der Raumtemperatur aktuell verwendet.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise der Software ==&lt;br /&gt;
&lt;br /&gt;
Türstatus-, Sensorabfrage und -Logging sowie das Auslösen der Boost-Funktion des Heizungsventils geschieht über die Skripte auf &#039;&#039;&#039;pyro&#039;&#039;&#039;, die in &amp;lt;code&amp;gt;/root/pyro/heizung/&amp;lt;/code&amp;gt; liegen, von &amp;lt;code&amp;gt;/bin&amp;lt;/code&amp;gt; aus verlinkt sind und über die crontab vom Benutzer root regelmäßig gestartet werden. Die aktuelle Raumtemperatur wird im Moment als Minimum zweier Sensoren in Raum01 ermittelt, wobei „Ausreißer“ (wenn ein Sensor z.B. mal gerade 85° sagt) rausgefiltert werden. Diese Skripte stehen unter Versionskontrolle: git.cccgoe.de.&lt;br /&gt;
&lt;br /&gt;
Ob die Boost-Funktion der Heizung ausgelöst werden soll oder nicht, entscheidet das regelmäßig laufende &amp;lt;code&amp;gt;boostiftoocold&amp;lt;/code&amp;gt;-Skript. Dieses vergleicht eine Ist-Temperatur mit einer on-the-fly bestimmten Soll-Temperatur, die das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript berechnet; denn das verwaltet all die Vorgaben und kann bestimmen welche Temperatur wann mindestens erreicht sein muss, damit die Ziele erfüllt werden können.&lt;br /&gt;
&lt;br /&gt;
Auf &#039;&#039;&#039;pyro&#039;&#039;&#039; läuft auch der XMPP-Bot unter dem User &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt;. Der Bot wird aktuell automatisch nach dem Booten über &amp;lt;code&amp;gt;cron&amp;lt;/code&amp;gt; gestartet. Dessen Python-Code liegt im Heimverzeichnis von &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt; und steht unter Versionskontrolle (BitBucket-Projekt von defnull).&lt;br /&gt;
&lt;br /&gt;
Der Chat-Bot selbst macht gar nicht viel. Er liest die aktuelle Temperatur von &amp;lt;code&amp;gt;/var/therm/now&amp;lt;/code&amp;gt; und ruft das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript auf, um die Temperaturen und Zeiten festzulegen und anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
Diejenigen, die Änderungen an dem Jabber Bot vornehmen wollen, fragen defnull am besten nach Schreibzugriff auf das entsprechende git Repo. Nach Änderungen an diesem Repo kann man dem Bot per &amp;quot;reload&amp;quot; sagen, dass er sich neu starten soll. Dabei updatet er sich auch.&lt;br /&gt;
&lt;br /&gt;
=== Abschaltautomatiken ===&lt;br /&gt;
&lt;br /&gt;
Wir wollen nicht umsonst heizen. Deswegen gibt es zwei Automatiken, die die Heizung abschalten können, ohne dabei zukünftige Heizpläne zu beeinflussen:&lt;br /&gt;
&lt;br /&gt;
* Fall „Keiner ist gekommen“: Wenn die Zeit eines bestimmten Temperatur-Ziels erreicht wurde, die Wohnungstür aber noch geschlossen ist, wird automatisch ein Abschalt-Event für 2 Stunden später eingefügt (quasi &amp;lt;code&amp;gt;!kuschelig off 2h&amp;lt;/code&amp;gt;). Kommt man also etwas später und möchte es es warm halten, muss man manuell dieses Abschalt-Event entfernen, damit die Heizung nicht einfach ausgeht. Ja, das ist suboptimal und könnte noch verbessert werden.&lt;br /&gt;
* Fall „Keiner ist mehr da“: Wenn das Heizsystem mitbekommt, dass die Tür von einem offenen in den geschlossenen Zustand wechselt, dann wird automatisch quasi ein &amp;lt;code&amp;gt;!kuschelig off&amp;lt;/code&amp;gt; ausgelöst.&lt;br /&gt;
&lt;br /&gt;
Damit das mit der Türstatusabfrage klappt, muss auf &#039;&#039;&#039;brickme&#039;&#039;&#039; der entsprechende Türstatus-Abfrage Dienst laufen.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* Die Heizung in der Küche mit anbinden!&lt;br /&gt;
* &amp;lt;s&amp;gt;Pyro scheint neuerdings nicht lange &amp;quot;durchzuhalten&amp;quot; (ist dann nicht mehr erreichbar)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Der Boost wird nicht wie erwartet alle 6 Minuten sondern eher im 10-Minuten-Takt ausgelöst. Es dauert also länger, bis die Zieltemperatur erreicht ist, wenn sie überhaupt erreicht werden kann. Keine Ahnung warum. In der crontab von root steht das &amp;lt;code&amp;gt;boostiftoocold&amp;lt;/code&amp;gt;-Skript so drin, dass es alle 6 Minuten gestartet werden müsste.&amp;lt;/s&amp;gt;&lt;br /&gt;
Das Problem war das ein von /bin/therm-boost-fg angelegtes Lockfile für 9 Minuten existierte obwohl es eigentlich nur 5minuten 30 sekunden leben&lt;br /&gt;
sollte.&lt;br /&gt;
Das Problem müsste behoben sein ich habe es aber noch nicht getestet.&lt;br /&gt;
* &amp;lt;s&amp;gt;Der Bot fliegt noch regelmäßig aus dem MUC raus. Möglicherweise bekommt der Bot vom MUC eine Nachricht, die er nicht parsen kann (hab da eine Fehlermeldung in der screen-Session gesehen, die auf ein fehlendes Anführungszeichen hindeutet) und will dies als Fehlermeldung dem MUC berichten, welcher darauf den Bot rausschmeißt.&amp;lt;/s&amp;gt;&lt;br /&gt;
Ich denke der fehler müsste erstmal behoben sein ich habe in /lib/python3.4/site-packages/sleekxmpp/stanza/rootstanza.py die Zeilen 75-79 auskommentiert&lt;br /&gt;
so das der bot keine Fehlermeldung mehr sendet wenn er eine Nachricht für ungültig hält.&lt;br /&gt;
Eigentlich müsste es aber eine schönere Lösung für das Problem geben.&lt;br /&gt;
* Bessere Fehlerbehandlung: Beispielsweise wird die Abschaltautomatik ohne irgendeine Art der Beschwerde ausgehebelt, wenn der Türstatus-Service nicht läuft. Wir müssten uns mal überlegen, wie wir solche Fehler sichtbar machen können.&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9692</id>
		<title>Kuschelig2.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9692"/>
		<updated>2015-03-26T14:25:56Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: Typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kuschelig 2.0 ist jetzt im Testbetrieb und ersetzt damit die [[Kuschelig|alte Heizungssteuerung]]. Sie läuft auf einem Raspberry Pi.&lt;br /&gt;
Zur Ansteuerung der Thermostate und zum Auslesen der Temperatursensoren werden Linux Kernelmodule für &lt;br /&gt;
Onewire verwendet. Die Steuerung ist weiterhin mit einem Jabber-Bot möglich.&lt;br /&gt;
Dieser läuft direkt auf dem Raspberry Pi und ist mit SleekXMPP in Python implementiert.&lt;br /&gt;
&lt;br /&gt;
== Heizungssteuerung über Chat-Bot ==&lt;br /&gt;
&lt;br /&gt;
Die Heizung kann über den Jabber bot mit der Jabber ID &#039;&#039;&#039;nokbot@cccgoe.de&#039;&#039;&#039; oder alternativ aus dem MUC (&#039;&#039;&#039;heizung&#039;&#039;&#039;) gesteuert werden. &lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Kommandos beim Heizungs-Bot sind folgende:&lt;br /&gt;
&lt;br /&gt;
* help – gibt Informationen zu einem Kommando&lt;br /&gt;
* status – gibt die aktuelle Raumtemperatur an und Einträge im Heizplan, falls vorhanden&lt;br /&gt;
* kuschelig – Einträge zum Heizplan hinzufügen&lt;br /&gt;
* kuschdel – Einträge aus dem Heizplan entfernen&lt;br /&gt;
&lt;br /&gt;
Wenn man es einfach nur warm haben will, so schnell es nur geht, kann &amp;lt;code&amp;gt;kuschelig&amp;lt;/code&amp;gt; ohne Parameter aufgerufen werden. Das ist dann äquivalent zu &amp;lt;code&amp;gt;kuschelig on&amp;lt;/code&amp;gt;. Dementsprechend gibt es auch &amp;lt;code&amp;gt;kuschelig off&amp;lt;/code&amp;gt;. Statt on/off lässt sich auch eine Temperatur zwischen 17-24 Grad Celsius angeben. Diese Befehle ohne eine Zeitangabe bedeuten immer &amp;quot;so schnell wie möglich&amp;quot; und überschreiben gegebenenfalls eine schon andere vorhandene Vorgabe:&lt;br /&gt;
&lt;br /&gt;
Wenn man sich entschließt, zu einer bestimmten Uhrzeit heute oder morgen im Noklab zu erscheinen, kann das kuschelig-Kommando noch um diese Zeit ergänzt werden. Wird zum Beispiel folgender Befehl eingegeben&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00&lt;br /&gt;
&lt;br /&gt;
dann versucht das Heizsystem die gewünschte Temperatur von 21°C bis 19 Uhr zu erreichen. Dazu muss dieses Ziel allerdings früh genug bekannt sein. Andere Tage lassen sich auch angeben:&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00 tomorrow&lt;br /&gt;
 !kuschelig 20 20:00 2015-03-03&lt;br /&gt;
&lt;br /&gt;
Über das status-Kommando lässt sich die aktuelle Raumtemperatur und eine Liste der Einträge, wann welche Temperatur erreicht werden soll, abfragen:&lt;br /&gt;
&lt;br /&gt;
 !status&lt;br /&gt;
&lt;br /&gt;
Ohne weitere Optionen werden aber nur maximal die ersten drei Einträge angezeigt. Mit&lt;br /&gt;
&lt;br /&gt;
 !status all&lt;br /&gt;
&lt;br /&gt;
bekommt man dann alle Einträge des Heizplans zu sehen.&lt;br /&gt;
&lt;br /&gt;
Zum Löschen der Einträge kann das Kommando &amp;lt;code&amp;gt;kuschdel&amp;lt;/code&amp;gt; benutzt werden. Es erwartet einen oder mehrere Indizes für die zu löschenden Einträge als einen Parameter. Beispiel:&lt;br /&gt;
&lt;br /&gt;
 !kuschdel 1&lt;br /&gt;
 !kuschdel 2,3&lt;br /&gt;
&lt;br /&gt;
== Statusanzeige per Ampel ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ampel2.jpg|thumb|50px]]&lt;br /&gt;
Im Space befindet sich im Regal die &amp;quot;Ampel&amp;quot; mit aktuell fünf Lampen. Die oberen zwei davon zeigen den Status der Heizung an. Wenn alle Lampen aus sind, soll nur die Basis-Temperatur (17°C) gehalten werden. Wenn eine der beiden Lampen an ist, ist die Heizung aktiv. Die obere, grüne Lampe leuchtet, wenn die Raumtemperatur größer oder gleich der Soll-Temperatur ist. Die gelbe Lampe darunter leuchtet, wenn die Soll-Temperatur noch nicht erreucht wurde und noch weiter geheizt werden muss.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Segment !! leuchtet, falls…&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #44FF44;&amp;quot;| 1. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;lt;= now&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #FFDD44;&amp;quot;| 2. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;gt; now&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Folgende Hardware ist im Einsatz:&lt;br /&gt;
&lt;br /&gt;
=== Thermostat ===&lt;br /&gt;
&lt;br /&gt;
An der Heizung ist ein digitaler Thermostat, bei dem eine Zieltemperatur über ein Rad eingestellt werden kann. Dieser sollte im Modus &amp;quot;Manu&amp;quot; für &amp;quot;manuell&amp;quot; bleiben. Der Modus &amp;quot;Auto&amp;quot; ist nämlich dazu da, per Zeitschaltung verschiedene Temperaturen anzufahren. Das erfordert allerdings, dass man den auch richtig programmiert. Es passt auch nicht ganz zu unseren Gewohnheiten, weil nicht immer jemand da ist und wenn doch, dann vielleicht auch mal bis spät in die Nacht.&lt;br /&gt;
&lt;br /&gt;
Das Thermostat ist gleichzeitig ein 1-Wire-Endgerät, worüber man für 5 Minuten das Ventil voll aufdrehen kann (&amp;quot;boost&amp;quot;). Ziel von Kuschelig 2.0 ist es, über diese Boost-Funktion und in der Wohnung verteilte 1-Wire-Temperatursensoren die Regelung selbst zu machen, so dass man schon bevor man in den Space reingeht, die Temperatur über einen Chat-Bot erfragen und beinflussen kann. Im Winter soll man also, bevor man noch in den Raum reingeht, die Zieltemperatur einstellen können, damit man sich hier nicht erst einen abfrieren muss. Damit nicht immer geheizt wird, sollte aber die Zieltemperatur beim Thermostat selbst bei 17° liegen.&lt;br /&gt;
&lt;br /&gt;
Funktioniert das System mal gerade nicht, kann immer noch direkt am Thermostat die Zieltemperatur per Rad eingestellt werden. Man darf dann nicht vergessen, das wieder runter auf 17° zu stellen.&lt;br /&gt;
&lt;br /&gt;
Die 17°, die wir da beim Thermostat eingestellt haben, ist also die Mindesttemperatur, die wir nicht unterschreiten wollen, da es sonst mit der Luftfeuchtigkeit und Schimmel Probleme geben könnte.&lt;br /&gt;
&lt;br /&gt;
=== Elektronik ===&lt;br /&gt;
&lt;br /&gt;
Die Heizung wird von einem Raspberry-Pi über Onewire gesteuert dabei werden die Sensoren und das Thermostat verwendet die schon &lt;br /&gt;
bei [[Kuschelig]] zum Einsatz kamen.&lt;br /&gt;
Sowohl das Thermostat und die Sensoren als auch der Raspberry-Pi werden über die 5-Volt und Masse Leitung der Onewire-Verbindung mit Strom versorgt.&lt;br /&gt;
&lt;br /&gt;
=== Sensoren ===&lt;br /&gt;
&lt;br /&gt;
Die One-Wire Sensoren mit ihren IDs, die überall im Space verteilt sind:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!   ID              !!  Ort  &lt;br /&gt;
|-&lt;br /&gt;
|   10-00080181e1cf ||  Küche: Heizung Vorlauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dcbf7e ||  Küche: Heizung Rücklauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dd1380 ||  Heizung Rücklauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-00080200db39 ||  Heizung Vorlauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-0008020165f9 ||  Küche: an der Decke&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFccbb;&amp;quot;|   22-0000000ed18a ||style=&amp;quot;background-color:#FFccbb;&amp;quot;|  beim Noklab-Gemälde (unzuverlässig)&lt;br /&gt;
|-&lt;br /&gt;
|   28-000001c75bf1 ||  in der Mitte oben am großen Fenster&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-000001c77c5e ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  im Spacemaster-Regal neben der Pumpe&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-00000558acfa ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  an der Decke&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die rosa hervorgehobenen Sensoren werden für die Bestimmung der Raumtemperatur aktuell verwendet.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise der Software ==&lt;br /&gt;
&lt;br /&gt;
Türstatus-, Sensorabfrage und -Logging sowie das Auslösen der Boost-Funktion des Heizungsventils geschieht über die Skripte auf &#039;&#039;&#039;pyro&#039;&#039;&#039;, die in &amp;lt;code&amp;gt;/root/pyro/heizung/&amp;lt;/code&amp;gt; liegen, von &amp;lt;code&amp;gt;/bin&amp;lt;/code&amp;gt; aus verlinkt sind und über die crontab vom Benutzer root regelmäßig gestartet werden. Die aktuelle Raumtemperatur wird im Moment als Minimum zweier Sensoren in Raum01 ermittelt, wobei „Ausreißer“ (wenn ein Sensor z.B. mal gerade 85° sagt) rausgefiltert werden. Diese Skripte stehen unter Versionskontrolle: git.cccgoe.de.&lt;br /&gt;
&lt;br /&gt;
Ob die Boost-Funktion der Heizung ausgelöst werden soll oder nicht, entscheidet das regelmäßig laufende &amp;lt;code&amp;gt;boostiftoocold&amp;lt;/code&amp;gt;-Skript. Dieses vergleicht eine Ist-Temperatur mit einer on-the-fly bestimten Soll-Temperatur, die das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript berechnet; denn das verwaltet all die Vorgaben und kann bestimmen welche Temperatur wann mindestens erreicht sein muss, damit die Ziele erfüllt werden können.&lt;br /&gt;
&lt;br /&gt;
Auf &#039;&#039;&#039;pyro&#039;&#039;&#039; läuft auch der XMPP-Bot unter dem User &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt;. Der Bot wird aktuell automatisch nach dem Booten über &amp;lt;code&amp;gt;cron&amp;lt;/code&amp;gt; gestartet. Dessen Python-Code liegt im Heimverzeichnis von &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt; und steht unter Versionskontrolle (BitBucket-Projekt von defnull).&lt;br /&gt;
&lt;br /&gt;
Der Chat-Bot selbst macht gar nicht viel. Er liest die aktuelle Temperatur von &amp;lt;code&amp;gt;/var/therm/now&amp;lt;/code&amp;gt; und ruft das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript auf, um die Temperaturen und Zeiten festzulegen und anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
Diejenigen, die Änderungen an dem Jabber Bot vornehmen wollen, fragen defnull am besten nach Schreibzugriff auf das entsprechende git Repo. Nach Änderungen an diesem Repo kann man dem Bot per &amp;quot;reload&amp;quot; sagen, dass er sich neu starten soll. Dabei updatet er sich auch.&lt;br /&gt;
&lt;br /&gt;
=== Abschaltautomatiken ===&lt;br /&gt;
&lt;br /&gt;
Wir wollen nicht umsonst heizen. Deswegen gibt es zwei Automatiken, die die Heizung abschalten können, ohne dabei zukünftige Heizpläne zu beeinflussen:&lt;br /&gt;
&lt;br /&gt;
* Fall „Keiner ist gekommen“: Wenn die Zeit eines bestimmten Temperatur-Ziels erreicht wurde, die Wohnungstür aber noch geschlossen ist, wird automatisch ein Abschalt-Event für 2 Stunden später eingefügt (quasi &amp;lt;code&amp;gt;!kuschelig off 2h&amp;lt;/code&amp;gt;). Kommt man also etwas später und möchte es es warm halten, muss man manuell dieses Abschalt-Event entfernen, damit die Heizung nicht einfach ausgeht. Ja, das ist suboptimal und könnte noch verbessert werden.&lt;br /&gt;
* Fall „Keiner ist mehr da“: Wenn das Heizsystem mitbekommt, dass die Tür von einem offenen in den geschlossenen Zustand wechselt, dann wird automatisch quasi ein &amp;lt;code&amp;gt;!kuschelig off&amp;lt;/code&amp;gt; ausgelöst.&lt;br /&gt;
&lt;br /&gt;
Damit das mit der Türstatusabfrage klappt, muss auf &#039;&#039;&#039;brickme&#039;&#039;&#039; der entsprechende Türstatus-Abfrage Dienst laufen.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* Die Heizung in der Küche mit anbinden!&lt;br /&gt;
* &amp;lt;s&amp;gt;Pyro scheint neuerdings nicht lange &amp;quot;durchzuhalten&amp;quot; (ist dann nicht mehr erreichbar)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Der Boost wird nicht wie erwartet alle 6 Minuten sondern eher im 10-Minuten-Takt ausgelöst. Es dauert also länger, bis die Zieltemperatur erreicht ist, wenn sie überhaupt erreicht werden kann. Keine Ahnung warum. In der crontab von root steht das &amp;lt;code&amp;gt;boostiftoocold&amp;lt;/code&amp;gt;-Skript so drin, dass es alle 6 Minuten gestartet werden müsste.&amp;lt;/s&amp;gt;&lt;br /&gt;
Das Problem war das ein von /bin/therm-boost-fg angelegtes Lockfile für 9 Minuten existierte obwohl es eigentlich nur 5minuten 30 sekunden leben&lt;br /&gt;
sollte.&lt;br /&gt;
Das Problem müsste behoben sein ich habe es aber noch nicht getestet.&lt;br /&gt;
* &amp;lt;s&amp;gt;Der Bot fliegt noch regelmäßig aus dem MUC raus. Möglicherweise bekommt der Bot vom MUC eine Nachricht, die er nicht parsen kann (hab da eine Fehlermeldung in der screen-Session gesehen, die auf ein fehlendes Anführungszeichen hindeutet) und will dies als Fehlermeldung dem MUC berichten, welcher darauf den Bot rausschmeißt.&amp;lt;/s&amp;gt;&lt;br /&gt;
Ich denke der fehler müsste erstmal behoben sein ich habe in /lib/python3.4/site-packages/sleekxmpp/stanza/rootstanza.py die Zeilen 75-79 auskommentiert&lt;br /&gt;
so das der bot keine Fehlermeldung mehr sendet wenn er eine Nachricht für ungültig hält.&lt;br /&gt;
Eigentlich müsste es aber eine schönere Lösung für das Problem geben.&lt;br /&gt;
* Bessere Fehlerbehandlung: Beispielsweise wird die Abschaltautomatik ohne irgendeine Art der Beschwerde ausgehebelt, wenn der Türstatus-Service nicht läuft. Wir müssten uns mal überlegen, wie wir solche Fehler sichtbar machen können.&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9580</id>
		<title>Kuschelig2.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9580"/>
		<updated>2015-02-26T23:56:20Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* TODO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kuschelig 2.0 ist jetzt im Testbetrieb und ersetzt damit die [[Kuschelig|alte Heizungssteuerung]]. Sie läuft auf einem Raspberry Pi.&lt;br /&gt;
Zur Ansteuerung der Thermostate und zum Auslesen der Temperatursensoren werden Linux Kernelmodule für &lt;br /&gt;
Onewire verwendet. Die Steuerung ist weiterhin mit einem Jabberbot möglich.&lt;br /&gt;
Dieser läuft direkt auf dem Raspberry Pi und ist mit SleekXMPP in Python implementiert.&lt;br /&gt;
&lt;br /&gt;
== Heizungssteuerung über Chat-Bot ==&lt;br /&gt;
&lt;br /&gt;
Die Heizung kann über den Jabber bot mit der Jabber ID &#039;&#039;&#039;nokbot@cccgoe.de&#039;&#039;&#039; oder alternativ aus dem MUC (&#039;&#039;&#039;heizung&#039;&#039;&#039;) gesteuert werden. &lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Kommandos beim Heizungs-Bot sind folgende:&lt;br /&gt;
&lt;br /&gt;
* help – gibt Informationen zu einem Kommando&lt;br /&gt;
* status – gibt die aktuelle Raumtemperatur and und Einträge im Heizplan, falls vorhanden&lt;br /&gt;
* kuschelig – Einträge zum Heizplan hinzufügen&lt;br /&gt;
* kuschdel – Einträge aus dem Heizplan entfernen&lt;br /&gt;
&lt;br /&gt;
Wenn man es einfach nur warm haben will, so schnell es nur geht, kann &amp;lt;code&amp;gt;kuschelig&amp;lt;/code&amp;gt; ohne Parameter aufgerufen werden. Das ist dann äquivalent zu &amp;lt;code&amp;gt;kuschelig on&amp;lt;/code&amp;gt;. Dementsprechend gibt es auch &amp;lt;code&amp;gt;kuschelig off&amp;lt;/code&amp;gt;. Statt on/off lässt sich auch eine Temperatur zwischen 17-24 Grad Celsius angeben. Diese Befehle ohne eine Zeitangabe bedeuten immer &amp;quot;so schnell wie möglich&amp;quot; und überschreiben gegebenenfalls eine schon andere vorhandene Vorgabe:&lt;br /&gt;
&lt;br /&gt;
Wenn man sich entschließt, zu einer bestimmten Uhrzeit heute oder morgen im Noklab zu erscheinen, kann das kuschelig-Kommando noch um diese Zeit ergänzt werden. Wird zum Beispiel folgender Befehl eingegeben&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00&lt;br /&gt;
&lt;br /&gt;
dann versucht das Heizsystem die gewünschte Temperatur von 21°C bis 19 Uhr zu erreichen. Dazu muss dieses Ziel allerdings früh genug bekannt sein. Andere Tage lassen sich auch angeben:&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00 tomorrow&lt;br /&gt;
 !kuschelig 20 20:00 2015-03-03&lt;br /&gt;
&lt;br /&gt;
Über das status-Kommando lässt sich die aktuelle Raumtemperatur und eine Liste der Einträge, wann welche Temperatur erreicht werden soll, abfragen:&lt;br /&gt;
&lt;br /&gt;
 !status&lt;br /&gt;
&lt;br /&gt;
Ohne weitere Optionen werden aber nur maximal die ersten drei Einträge angezeigt. Mit&lt;br /&gt;
&lt;br /&gt;
 !status all&lt;br /&gt;
&lt;br /&gt;
bekommt man dann alle Einträge des Heizplans zu sehen.&lt;br /&gt;
&lt;br /&gt;
Zum Löschen der Einträge kann das Kommando &amp;lt;code&amp;gt;kuschdel&amp;lt;/code&amp;gt; benutzt werden. Es erwartet einen oder mehrere Indides für die zu löschenden Einträge als einen Parameter. Beispiel:&lt;br /&gt;
&lt;br /&gt;
 !kuschdel 1&lt;br /&gt;
 !kuschdel 2,3&lt;br /&gt;
&lt;br /&gt;
== Statusanzeige per Ampel ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ampel2.jpg|thumb|50px]]&lt;br /&gt;
Im Space befindet sich im Regal die &amp;quot;Ampel&amp;quot; mit aktuell fünf Lampen. Die oberen zwei davon zeigen den Status der Heizung an. Wenn alle Lampen aus sind, soll nur die Basis-Temperatur (17°C) gehalten werden. Wenn eine der beiden Lampen an ist, ist die Heizung aktiv. Die obere, grüne Lampe leuchtet, wenn die Raumtemperatur größer oder gleich der Soll-Temperatur ist. Die gelbe Lampe darunter leuchtet, wenn die Soll-Temperatur noch nicht erreucht wurde und noch weiter geheizt werden muss.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Segment !! leuchtet, falls…&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #44FF44;&amp;quot;| 1. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;lt;= now&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #FFDD44;&amp;quot;| 2. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;gt; now&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Folgende Hardware ist im Einsatz:&lt;br /&gt;
&lt;br /&gt;
=== Thermostat ===&lt;br /&gt;
&lt;br /&gt;
An der Heizung ist ein digitaler Thermostat, bei dem eine Zieltemperatur über ein Rad eingestellt werden kann. Dieser sollte im Modus &amp;quot;Manu&amp;quot; für &amp;quot;manuell&amp;quot; bleiben. Der Modus &amp;quot;Auto&amp;quot; ist nämlich dazu da, per Zeitschaltung verschiedene Temperaturen anzufahren. Das erfordert allerdings, dass man den auch richtig programmiert. Es passt auch nicht ganz zu unseren Gewohnheiten, weil nicht immer jemand da ist und wenn doch, dann vielleicht auch mal bis spät in die Nacht.&lt;br /&gt;
&lt;br /&gt;
Das Thermostat ist gleichzeitig ein 1-Wire-Endgerät, worüber man für 5 Minuten das Ventil voll aufdrehen kann (&amp;quot;boost&amp;quot;). Ziel von Kuschelig 2.0 ist es, über diese Boost-Funktion und in der Wohnung verteilte 1-Wire-Temperatursensoren die Regelung selbst zu machen, so dass man schon bevor man in den Space reingeht, die Temperatur über einen Chat-Bot erfragen und beinflussen kann. Im Winter soll man also, bevor man noch in den Raum reingeht, die Zieltemperatur einstellen können, damit man sich hier nicht erst einen abfrieren muss. Damit nicht immer geheizt wird, sollte aber die Zieltemperatur beim Thermostat selbst bei 17° liegen.&lt;br /&gt;
&lt;br /&gt;
Funktioniert das System mal gerade nicht, kann immer noch direkt am Thermostat die Zieltemperatur per Rad eingestellt werden. Man darf dann nicht vergessen, das wieder runter auf 17° zu stellen.&lt;br /&gt;
&lt;br /&gt;
Die 17°, die wir da beim Thermostat eingestellt haben, ist also die Midnesttemperatur, die wir nicht unterschreiten wollen, da es sonst mit der Luftfeuchtigkeit und Schimmel Probleme geben könnte.&lt;br /&gt;
&lt;br /&gt;
=== Elektronik ===&lt;br /&gt;
&lt;br /&gt;
Die Heizung wird von einem Raspberry-Pi über Onewire gesteuert dabei werden die Sensoren und das Thermostat verwendet die schon &lt;br /&gt;
bei [[Kuschelig]] zum Einsatz kamen.&lt;br /&gt;
Sowohl das Thermostat und die Sensoren als auch der Raspberry-Pi werden über die 5-Volt und Masse Leitung der Onewire-Verbindung mit Strom versorgt.&lt;br /&gt;
&lt;br /&gt;
=== Sensoren ===&lt;br /&gt;
&lt;br /&gt;
Die One-Wire Sensoren mit ihren IDs, die überall im Space verteilt sind:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!   ID              !!  Ort  &lt;br /&gt;
|-&lt;br /&gt;
|   10-00080181e1cf ||  Küche: Heizung Vorlauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dcbf7e ||  Küche: Heizung Rücklauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dd1380 ||  Heizung Rücklauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-00080200db39 ||  Heizung Vorlauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-0008020165f9 ||  Küche: an der Decke&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFccbb;&amp;quot;|   22-0000000ed18a ||style=&amp;quot;background-color:#FFccbb;&amp;quot;|  beim Noklab-Gemälde (unzuverlässig)&lt;br /&gt;
|-&lt;br /&gt;
|   28-000001c75bf1 ||  in der Mitte oben am großen Fenster&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-000001c77c5e ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  im Spacemaster-Regal neben der Pumpe&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-00000558acfa ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  an der Decke&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die rosa hervorgehobenen Sensoren werden für die Bestimmung der Raumtemperatur aktuell verwendet.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise der Software ==&lt;br /&gt;
&lt;br /&gt;
Türstatus-, Sensorabfrage und -Logging sowie das Auslösen der Boost-Funktion des Heizungsventils geschieht über die Skripte auf &#039;&#039;&#039;pyro&#039;&#039;&#039;, die in &amp;lt;code&amp;gt;/root/pyro/heizung/&amp;lt;/code&amp;gt; liegen, von &amp;lt;code&amp;gt;/bin&amp;lt;/code&amp;gt; aus verlinkt sind und über die crontab vom Benutzer root regelmäßig gestartet werden. Die aktuelle Raumtemperatur wird im Moment als Minimum zweier Sensoren in Raum01 ermittelt, wobei „Ausreißer“ (wenn ein Sensor z.B. mal gerade 85° sagt) rausgefiltert werden. Diese Scripte stehen unter Versionskontrolle: git.cccgoe.de.&lt;br /&gt;
&lt;br /&gt;
Ob die Boost-Funktion der Heizung ausgelöst werden soll oder nicht, entscheidet das regelmäßig laufende &amp;lt;code&amp;gt;boostiftoocold&amp;lt;/code&amp;gt;-Skript. Dieses vergleicht eine Ist-Temperatur mit einer on-the-fly bestimten Soll-Temperatur, die das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript berechnet; denn das verwaltet all die Vorgaben und kann bestimmen welche Temperatur wann mindestens erreicht sein muss, damit die Ziele erfüllt werden können.&lt;br /&gt;
&lt;br /&gt;
Auf &#039;&#039;&#039;pyro&#039;&#039;&#039; läuft auch der XMPP-Bot unter dem User &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt;. Der Bot wird aktuell automatisch nach dem Booten über &amp;lt;code&amp;gt;cron&amp;lt;/code&amp;gt; gestartet. Dessen Python-Code liegt im Heimverzeichnis von &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt; und steht unter Versionskontrolle (bitbucket-Projekt von defnull).&lt;br /&gt;
&lt;br /&gt;
Der Chat-Bot selbst macht gar nicht viel. Er liest die aktuelle Temperatur von &amp;lt;code&amp;gt;/var/therm/now&amp;lt;/code&amp;gt; und ruft das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript auf, um die Temperaturen und Zeiten festzulegen und anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
Diejenigen, die Änderungen an dem Jabber Bot vornehmen wollen, fragen defnull am besten nach Schreibzugriff auf das entsprechende git Repo. Nach Änderungen an diesem Repo kann man dem Bot per &amp;quot;reload&amp;quot; sagen, dass er sich neustarten soll. Dabei updatet er sich auch.&lt;br /&gt;
&lt;br /&gt;
=== Abschaltautomatiken ===&lt;br /&gt;
&lt;br /&gt;
Wir wollen nicht umsonst heizen. Deswegen gibt es zwei Automatiken, die die Heizung abschalten können, ohne dabei zukünftige Heizpläne zu beeinflussen:&lt;br /&gt;
&lt;br /&gt;
* Fall „Keiner ist gekommen“: Wenn die Zeit eines bestimmten Temperatur-Ziels erreicht wurde, die Wohnungstür aber noch geschlossen ist, wird automatisch ein Abschalt-Event für 2 Stunden später eingefügt (quasi &amp;lt;code&amp;gt;!kuschelig off 2h&amp;lt;/code&amp;gt;). Kommt man also etwas später und möchte es es warm halten, muss man manuell dieses Abschalt-Event entfernen, damit die Heizung nicht einfach ausgeht. Ja, das ist suboptimal und könnte noch verbessert werden.&lt;br /&gt;
* Fall „Keiner ist mehr da“: Wenn das Heizsystem mitbekommt, dass die Tür von einem offenen in den geschlossenen Zustand wechselt, dann wird automatisch quasi ein &amp;lt;code&amp;gt;!kuschelig off&amp;lt;/code&amp;gt; ausgelöst.&lt;br /&gt;
&lt;br /&gt;
Damit das mit der Türstatusabfrage klappt, muss auf &#039;&#039;&#039;brickme&#039;&#039;&#039; der entsprechende Türstatus-Abfrage Dienst laufen.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* Die Heizung in der Küche mit anbinden!&lt;br /&gt;
* &amp;lt;s&amp;gt;Pyro scheint neuerdings nicht lange &amp;quot;durchzuhalten&amp;quot; (ist dann nicht mehr erreichbar)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Der Boost wird nicht wie erwartet alle 6 Minuten sondern eher im 10-Minuten-Takt ausgelöst. Es dauert also länger, bis die Zieltemperatur erreicht ist, wenn sie überhaupt erreicht werden kann. Keine Ahnung warum. In der crontab von root steht das &amp;lt;code&amp;gt;boostiftoocold&amp;lt;/code&amp;gt;-Skript so drin, dass es alle 6 Minuten gestartet werden müsste.&amp;lt;/s&amp;gt;&lt;br /&gt;
Das Problem war das ein von /bin/therm-boost-fg angelegtes lockfile für 9 minuten existierte obwohl es eigentlich nur 5minuten 30 sekunden leben&lt;br /&gt;
sollte.&lt;br /&gt;
Das Problem müsste behoben sein ich habe es aber noch nicht getestet.&lt;br /&gt;
* &amp;lt;s&amp;gt;Der Bot fliegt noch regelmäßig aus dem MUC raus. Möglicherweise bekommt der Bot vom MUC eine Nachricht, die er nicht parsen kann (hab da eine Fehlermeldung in der screen-Session gesehen, die auf ein fehlendes Anführungszeichen hindeutet) und will dies als Fehlermeldung dem MUC berichten, welcher darauf den Bot rausschmeißt.&amp;lt;/s&amp;gt;&lt;br /&gt;
Ich denke der fehler müsste erstmal behoben sein ich habe in /lib/python3.4/site-packages/sleekxmpp/stanza/rootstanza.py die Zeilen 75-79 auskommentiert&lt;br /&gt;
so das der bot keine Fehlermeldung mehr sendet wenn er eine Nachricht für ungültig hält.&lt;br /&gt;
Eigentlich müsste es aber eine schönere Lösung für das Problem geben.&lt;br /&gt;
* Bessere Fehlerbehandlung: Beispielsweise wird die Abschaltautomatik ohne irgendeine Art der Beschwerde ausgehebelt, wenn der Türstatus-Service nicht läuft. Wir müssten uns mal überlegen, wie wir solche Fehler sichtbar machen können.&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9579</id>
		<title>Kuschelig2.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9579"/>
		<updated>2015-02-26T23:55:24Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Heizungssteuerung über Chat-Bot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kuschelig 2.0 ist jetzt im Testbetrieb und ersetzt damit die [[Kuschelig|alte Heizungssteuerung]]. Sie läuft auf einem Raspberry Pi.&lt;br /&gt;
Zur Ansteuerung der Thermostate und zum Auslesen der Temperatursensoren werden Linux Kernelmodule für &lt;br /&gt;
Onewire verwendet. Die Steuerung ist weiterhin mit einem Jabberbot möglich.&lt;br /&gt;
Dieser läuft direkt auf dem Raspberry Pi und ist mit SleekXMPP in Python implementiert.&lt;br /&gt;
&lt;br /&gt;
== Heizungssteuerung über Chat-Bot ==&lt;br /&gt;
&lt;br /&gt;
Die Heizung kann über den Jabber bot mit der Jabber ID &#039;&#039;&#039;nokbot@cccgoe.de&#039;&#039;&#039; oder alternativ aus dem MUC (&#039;&#039;&#039;heizung&#039;&#039;&#039;) gesteuert werden. &lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Kommandos beim Heizungs-Bot sind folgende:&lt;br /&gt;
&lt;br /&gt;
* help – gibt Informationen zu einem Kommando&lt;br /&gt;
* status – gibt die aktuelle Raumtemperatur and und Einträge im Heizplan, falls vorhanden&lt;br /&gt;
* kuschelig – Einträge zum Heizplan hinzufügen&lt;br /&gt;
* kuschdel – Einträge aus dem Heizplan entfernen&lt;br /&gt;
&lt;br /&gt;
Wenn man es einfach nur warm haben will, so schnell es nur geht, kann &amp;lt;code&amp;gt;kuschelig&amp;lt;/code&amp;gt; ohne Parameter aufgerufen werden. Das ist dann äquivalent zu &amp;lt;code&amp;gt;kuschelig on&amp;lt;/code&amp;gt;. Dementsprechend gibt es auch &amp;lt;code&amp;gt;kuschelig off&amp;lt;/code&amp;gt;. Statt on/off lässt sich auch eine Temperatur zwischen 17-24 Grad Celsius angeben. Diese Befehle ohne eine Zeitangabe bedeuten immer &amp;quot;so schnell wie möglich&amp;quot; und überschreiben gegebenenfalls eine schon andere vorhandene Vorgabe:&lt;br /&gt;
&lt;br /&gt;
Wenn man sich entschließt, zu einer bestimmten Uhrzeit heute oder morgen im Noklab zu erscheinen, kann das kuschelig-Kommando noch um diese Zeit ergänzt werden. Wird zum Beispiel folgender Befehl eingegeben&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00&lt;br /&gt;
&lt;br /&gt;
dann versucht das Heizsystem die gewünschte Temperatur von 21°C bis 19 Uhr zu erreichen. Dazu muss dieses Ziel allerdings früh genug bekannt sein. Andere Tage lassen sich auch angeben:&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00 tomorrow&lt;br /&gt;
 !kuschelig 20 20:00 2015-03-03&lt;br /&gt;
&lt;br /&gt;
Über das status-Kommando lässt sich die aktuelle Raumtemperatur und eine Liste der Einträge, wann welche Temperatur erreicht werden soll, abfragen:&lt;br /&gt;
&lt;br /&gt;
 !status&lt;br /&gt;
&lt;br /&gt;
Ohne weitere Optionen werden aber nur maximal die ersten drei Einträge angezeigt. Mit&lt;br /&gt;
&lt;br /&gt;
 !status all&lt;br /&gt;
&lt;br /&gt;
bekommt man dann alle Einträge des Heizplans zu sehen.&lt;br /&gt;
&lt;br /&gt;
Zum Löschen der Einträge kann das Kommando &amp;lt;code&amp;gt;kuschdel&amp;lt;/code&amp;gt; benutzt werden. Es erwartet einen oder mehrere Indides für die zu löschenden Einträge als einen Parameter. Beispiel:&lt;br /&gt;
&lt;br /&gt;
 !kuschdel 1&lt;br /&gt;
 !kuschdel 2,3&lt;br /&gt;
&lt;br /&gt;
== Statusanzeige per Ampel ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ampel2.jpg|thumb|50px]]&lt;br /&gt;
Im Space befindet sich im Regal die &amp;quot;Ampel&amp;quot; mit aktuell fünf Lampen. Die oberen zwei davon zeigen den Status der Heizung an. Wenn alle Lampen aus sind, soll nur die Basis-Temperatur (17°C) gehalten werden. Wenn eine der beiden Lampen an ist, ist die Heizung aktiv. Die obere, grüne Lampe leuchtet, wenn die Raumtemperatur größer oder gleich der Soll-Temperatur ist. Die gelbe Lampe darunter leuchtet, wenn die Soll-Temperatur noch nicht erreucht wurde und noch weiter geheizt werden muss.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Segment !! leuchtet, falls…&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #44FF44;&amp;quot;| 1. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;lt;= now&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #FFDD44;&amp;quot;| 2. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;gt; now&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Folgende Hardware ist im Einsatz:&lt;br /&gt;
&lt;br /&gt;
=== Thermostat ===&lt;br /&gt;
&lt;br /&gt;
An der Heizung ist ein digitaler Thermostat, bei dem eine Zieltemperatur über ein Rad eingestellt werden kann. Dieser sollte im Modus &amp;quot;Manu&amp;quot; für &amp;quot;manuell&amp;quot; bleiben. Der Modus &amp;quot;Auto&amp;quot; ist nämlich dazu da, per Zeitschaltung verschiedene Temperaturen anzufahren. Das erfordert allerdings, dass man den auch richtig programmiert. Es passt auch nicht ganz zu unseren Gewohnheiten, weil nicht immer jemand da ist und wenn doch, dann vielleicht auch mal bis spät in die Nacht.&lt;br /&gt;
&lt;br /&gt;
Das Thermostat ist gleichzeitig ein 1-Wire-Endgerät, worüber man für 5 Minuten das Ventil voll aufdrehen kann (&amp;quot;boost&amp;quot;). Ziel von Kuschelig 2.0 ist es, über diese Boost-Funktion und in der Wohnung verteilte 1-Wire-Temperatursensoren die Regelung selbst zu machen, so dass man schon bevor man in den Space reingeht, die Temperatur über einen Chat-Bot erfragen und beinflussen kann. Im Winter soll man also, bevor man noch in den Raum reingeht, die Zieltemperatur einstellen können, damit man sich hier nicht erst einen abfrieren muss. Damit nicht immer geheizt wird, sollte aber die Zieltemperatur beim Thermostat selbst bei 17° liegen.&lt;br /&gt;
&lt;br /&gt;
Funktioniert das System mal gerade nicht, kann immer noch direkt am Thermostat die Zieltemperatur per Rad eingestellt werden. Man darf dann nicht vergessen, das wieder runter auf 17° zu stellen.&lt;br /&gt;
&lt;br /&gt;
Die 17°, die wir da beim Thermostat eingestellt haben, ist also die Midnesttemperatur, die wir nicht unterschreiten wollen, da es sonst mit der Luftfeuchtigkeit und Schimmel Probleme geben könnte.&lt;br /&gt;
&lt;br /&gt;
=== Elektronik ===&lt;br /&gt;
&lt;br /&gt;
Die Heizung wird von einem Raspberry-Pi über Onewire gesteuert dabei werden die Sensoren und das Thermostat verwendet die schon &lt;br /&gt;
bei [[Kuschelig]] zum Einsatz kamen.&lt;br /&gt;
Sowohl das Thermostat und die Sensoren als auch der Raspberry-Pi werden über die 5-Volt und Masse Leitung der Onewire-Verbindung mit Strom versorgt.&lt;br /&gt;
&lt;br /&gt;
=== Sensoren ===&lt;br /&gt;
&lt;br /&gt;
Die One-Wire Sensoren mit ihren IDs, die überall im Space verteilt sind:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!   ID              !!  Ort  &lt;br /&gt;
|-&lt;br /&gt;
|   10-00080181e1cf ||  Küche: Heizung Vorlauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dcbf7e ||  Küche: Heizung Rücklauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dd1380 ||  Heizung Rücklauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-00080200db39 ||  Heizung Vorlauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-0008020165f9 ||  Küche: an der Decke&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFccbb;&amp;quot;|   22-0000000ed18a ||style=&amp;quot;background-color:#FFccbb;&amp;quot;|  beim Noklab-Gemälde (unzuverlässig)&lt;br /&gt;
|-&lt;br /&gt;
|   28-000001c75bf1 ||  in der Mitte oben am großen Fenster&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-000001c77c5e ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  im Spacemaster-Regal neben der Pumpe&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-00000558acfa ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  an der Decke&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die rosa hervorgehobenen Sensoren werden für die Bestimmung der Raumtemperatur aktuell verwendet.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise der Software ==&lt;br /&gt;
&lt;br /&gt;
Türstatus-, Sensorabfrage und -Logging sowie das Auslösen der Boost-Funktion des Heizungsventils geschieht über die Skripte auf &#039;&#039;&#039;pyro&#039;&#039;&#039;, die in &amp;lt;code&amp;gt;/root/pyro/heizung/&amp;lt;/code&amp;gt; liegen, von &amp;lt;code&amp;gt;/bin&amp;lt;/code&amp;gt; aus verlinkt sind und über die crontab vom Benutzer root regelmäßig gestartet werden. Die aktuelle Raumtemperatur wird im Moment als Minimum zweier Sensoren in Raum01 ermittelt, wobei „Ausreißer“ (wenn ein Sensor z.B. mal gerade 85° sagt) rausgefiltert werden. Diese Scripte stehen unter Versionskontrolle: git.cccgoe.de.&lt;br /&gt;
&lt;br /&gt;
Ob die Boost-Funktion der Heizung ausgelöst werden soll oder nicht, entscheidet das regelmäßig laufende &amp;lt;code&amp;gt;boostiftoocold&amp;lt;/code&amp;gt;-Skript. Dieses vergleicht eine Ist-Temperatur mit einer on-the-fly bestimten Soll-Temperatur, die das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript berechnet; denn das verwaltet all die Vorgaben und kann bestimmen welche Temperatur wann mindestens erreicht sein muss, damit die Ziele erfüllt werden können.&lt;br /&gt;
&lt;br /&gt;
Auf &#039;&#039;&#039;pyro&#039;&#039;&#039; läuft auch der XMPP-Bot unter dem User &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt;. Der Bot wird aktuell automatisch nach dem Booten über &amp;lt;code&amp;gt;cron&amp;lt;/code&amp;gt; gestartet. Dessen Python-Code liegt im Heimverzeichnis von &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt; und steht unter Versionskontrolle (bitbucket-Projekt von defnull).&lt;br /&gt;
&lt;br /&gt;
Der Chat-Bot selbst macht gar nicht viel. Er liest die aktuelle Temperatur von &amp;lt;code&amp;gt;/var/therm/now&amp;lt;/code&amp;gt; und ruft das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript auf, um die Temperaturen und Zeiten festzulegen und anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
Diejenigen, die Änderungen an dem Jabber Bot vornehmen wollen, fragen defnull am besten nach Schreibzugriff auf das entsprechende git Repo. Nach Änderungen an diesem Repo kann man dem Bot per &amp;quot;reload&amp;quot; sagen, dass er sich neustarten soll. Dabei updatet er sich auch.&lt;br /&gt;
&lt;br /&gt;
=== Abschaltautomatiken ===&lt;br /&gt;
&lt;br /&gt;
Wir wollen nicht umsonst heizen. Deswegen gibt es zwei Automatiken, die die Heizung abschalten können, ohne dabei zukünftige Heizpläne zu beeinflussen:&lt;br /&gt;
&lt;br /&gt;
* Fall „Keiner ist gekommen“: Wenn die Zeit eines bestimmten Temperatur-Ziels erreicht wurde, die Wohnungstür aber noch geschlossen ist, wird automatisch ein Abschalt-Event für 2 Stunden später eingefügt (quasi &amp;lt;code&amp;gt;!kuschelig off 2h&amp;lt;/code&amp;gt;). Kommt man also etwas später und möchte es es warm halten, muss man manuell dieses Abschalt-Event entfernen, damit die Heizung nicht einfach ausgeht. Ja, das ist suboptimal und könnte noch verbessert werden.&lt;br /&gt;
* Fall „Keiner ist mehr da“: Wenn das Heizsystem mitbekommt, dass die Tür von einem offenen in den geschlossenen Zustand wechselt, dann wird automatisch quasi ein &amp;lt;code&amp;gt;!kuschelig off&amp;lt;/code&amp;gt; ausgelöst.&lt;br /&gt;
&lt;br /&gt;
Damit das mit der Türstatusabfrage klappt, muss auf &#039;&#039;&#039;brickme&#039;&#039;&#039; der entsprechende Türstatus-Abfrage Dienst laufen.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;Pyro scheint neuerdings nicht lange &amp;quot;durchzuhalten&amp;quot; (ist dann nicht mehr erreichbar)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Der Boost wird nicht wie erwartet alle 6 Minuten sondern eher im 10-Minuten-Takt ausgelöst. Es dauert also länger, bis die Zieltemperatur erreicht ist, wenn sie überhaupt erreicht werden kann. Keine Ahnung warum. In der crontab von root steht das &amp;lt;code&amp;gt;boostiftoocold&amp;lt;/code&amp;gt;-Skript so drin, dass es alle 6 Minuten gestartet werden müsste.&amp;lt;/s&amp;gt;&lt;br /&gt;
Das Problem war das ein von /bin/therm-boost-fg angelegtes lockfile für 9 minuten existierte obwohl es eigentlich nur 5minuten 30 sekunden leben&lt;br /&gt;
sollte.&lt;br /&gt;
Das Problem müsste behoben sein ich habe es aber noch nicht getestet.&lt;br /&gt;
* &amp;lt;s&amp;gt;Der Bot fliegt noch regelmäßig aus dem MUC raus. Möglicherweise bekommt der Bot vom MUC eine Nachricht, die er nicht parsen kann (hab da eine Fehlermeldung in der screen-Session gesehen, die auf ein fehlendes Anführungszeichen hindeutet) und will dies als Fehlermeldung dem MUC berichten, welcher darauf den Bot rausschmeißt.&amp;lt;/s&amp;gt;&lt;br /&gt;
Ich denke der fehler müsste erstmal behoben sein ich habe in /lib/python3.4/site-packages/sleekxmpp/stanza/rootstanza.py die Zeilen 75-79 auskommentiert&lt;br /&gt;
so das der bot keine Fehlermeldung mehr sendet wenn er eine Nachricht für ungültig hält.&lt;br /&gt;
Eigentlich müsste es aber eine schönere Lösung für das Problem geben.&lt;br /&gt;
* Bessere Fehlerbehandlung: Beispielsweise wird die Abschaltautomatik ohne irgendeine Art der Beschwerde ausgehebelt, wenn der Türstatus-Service nicht läuft. Wir müssten uns mal überlegen, wie wir solche Fehler sichtbar machen können.&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9578</id>
		<title>Kuschelig2.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9578"/>
		<updated>2015-02-25T19:04:38Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Sensoren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kuschelig 2.0 ist jetzt im Testbetrieb und ersetzt damit die [[Kuschelig|alte Heizungssteuerung]]. Sie läuft auf einem Raspberry Pi.&lt;br /&gt;
Zur Ansteuerung der Thermostate und zum Auslesen der Temperatursensoren werden Linux Kernelmodule für &lt;br /&gt;
Onewire verwendet. Die Steuerung ist weiterhin mit einem Jabberbot möglich.&lt;br /&gt;
Dieser läuft direkt auf dem Raspberry Pi und ist mit SleekXMPP in Python implementiert.&lt;br /&gt;
&lt;br /&gt;
== Heizungssteuerung über Chat-Bot ==&lt;br /&gt;
&lt;br /&gt;
Die Heizung kann über den Jabber bot mit der Jabber ID &#039;&#039;&#039;nokbot@cccgoe.de&#039;&#039;&#039; oder alternativ aus dem MUC (&#039;&#039;&#039;heizung&#039;&#039;&#039;) gesteuert werden. &lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Kommandos beim Heizungs-Bot sind folgende:&lt;br /&gt;
&lt;br /&gt;
* help – gibt Informationen zu einem Kommando&lt;br /&gt;
* status – gibt die aktuelle Raumtemperatur and und Einträge im Heizplan, falls vorhanden&lt;br /&gt;
* kuschelig – Einträge zum Heizplan hinzufügen&lt;br /&gt;
* kuschdel – Einträge aus dem Heizplan entfernen&lt;br /&gt;
&lt;br /&gt;
Wenn man es einfach nur warm haben will, so schnell es nur geht, kann &amp;lt;code&amp;gt;kuschelig&amp;lt;/code&amp;gt; ohne Parameter aufgerufen werden. Das ist dann äquivalent zu &amp;lt;code&amp;gt;kuschelig on&amp;lt;/code&amp;gt;. Dementsprechend gibt es auch &amp;lt;code&amp;gt;kuschelig off&amp;lt;/code&amp;gt;. Statt on/off lässt sich auch eine Temperatur zwischen 17-24 Grad Celsius angeben. Diese Befehle ohne eine Zeitangabe bedeuten immer &amp;quot;so schnell wie möglich&amp;quot; und überschreiben gegebenenfalls eine schon andere vorhandene Vorgabe.&lt;br /&gt;
&lt;br /&gt;
Wenn man sich entschließt, zu einer bestimmten Uhrzeit heute oder morgen im Noklab zu erscheinen, kann das kuschelig-Kommando noch um diese Zeit ergänzt werden. Wird zum Beispiel folgender Befehl eingegeben&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00&lt;br /&gt;
&lt;br /&gt;
dann versucht das Heizsystem die gewünschte Temperatur von 21°C bis 19 Uhr zu erreichen. Dazu muss dieses Ziel allerdings früh genug bekannt sein. Andere Tage lassen sich auch angeben. Nur muss man dabei etwas aufpassen, weil der kuschelg-Befehl Parameter anhand von Leerzeichen voneinander unterscheided. Man muss ein Datum gegebenenfalls in Anführungszeichen setzen:&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00 tomorrow&lt;br /&gt;
 !kuschelig 21 19:00 &amp;quot;Feb 24&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Über das status-Kommando lässt sich eine Liste der Einträge, wann welche Temperatur erreicht werden soll, anzeigen:&lt;br /&gt;
&lt;br /&gt;
 !status&lt;br /&gt;
&lt;br /&gt;
Ohne weitere Optionen werden aber nur maximal die ersten drei Einträge angezeigt. Mit&lt;br /&gt;
&lt;br /&gt;
 !status all&lt;br /&gt;
&lt;br /&gt;
bekommt man dann alle Einträge im Heizplan zu sehen.&lt;br /&gt;
&lt;br /&gt;
Zum Löschen der Einträge kann das Kommando &amp;lt;code&amp;gt;kuschdel&amp;lt;/code&amp;gt; benutzt werden. Es erwartet einen oder mehrere Indides für die zu löschenden Einträge als einen Parameter. Beispiel:&lt;br /&gt;
&lt;br /&gt;
 !kuschdel 1&lt;br /&gt;
 !kuschdel 2,3&lt;br /&gt;
&lt;br /&gt;
Man achte darauf, dass in der Liste der Indizes kein Leerzeichen enthalten ist. Sonst müsste man wieder die Anführungszeichen bemühen.&lt;br /&gt;
&lt;br /&gt;
== Statusanzeige per Ampel ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ampel2.jpg|thumb|50px]]&lt;br /&gt;
Im Space befindet sich im Regal die &amp;quot;Ampel&amp;quot; mit aktuell fünf Lampen. Die oberen zwei davon zeigen den Status der Heizung an. Wenn alle Lampen aus sind, soll nur die Basis-Temperatur (17°C) gehalten werden. Wenn eine der beiden Lampen an ist, ist die Heizung aktiv. Die obere, grüne Lampe leuchtet, wenn die Raumtemperatur größer oder gleich der Soll-Temperatur ist. Die gelbe Lampe darunter leuchtet, wenn die Soll-Temperatur noch nicht erreucht wurde und noch weiter geheizt werden muss.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Segment !! leuchtet, falls…&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #44FF44;&amp;quot;| 1. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;lt;= now&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #FFDD44;&amp;quot;| 2. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;gt; now&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Folgende Hardware ist im Einsatz:&lt;br /&gt;
&lt;br /&gt;
=== Thermostat ===&lt;br /&gt;
&lt;br /&gt;
An der Heizung ist ein digitaler Thermostat, bei dem eine Zieltemperatur über ein Rad eingestellt werden kann. Dieser sollte im Modus &amp;quot;Manu&amp;quot; für &amp;quot;manuell&amp;quot; bleiben. Der Modus &amp;quot;Auto&amp;quot; ist nämlich dazu da, per Zeitschaltung verschiedene Temperaturen anzufahren. Das erfordert allerdings, dass man den auch richtig programmiert. Es passt auch nicht ganz zu unseren Gewohnheiten, weil nicht immer jemand da ist und wenn doch, dann vielleicht auch mal bis spät in die Nacht.&lt;br /&gt;
&lt;br /&gt;
Das Thermostat ist gleichzeitig ein 1-Wire-Endgerät, worüber man für 5 Minuten das Ventil voll aufdrehen kann (&amp;quot;boost&amp;quot;). Ziel von Kuschelig 2.0 ist es, über diese Boost-Funktion und in der Wohnung verteilte 1-Wire-Temperatursensoren die Regelung selbst zu machen, so dass man schon bevor man in den Space reingeht, die Temperatur über einen Chat-Bot erfragen und beinflussen kann. Im Winter soll man also, bevor man noch in den Raum reingeht, die Zieltemperatur einstellen können, damit man sich hier nicht erst einen abfrieren muss. Damit nicht immer geheizt wird, sollte aber die Zieltemperatur beim Thermostat selbst bei 17° liegen.&lt;br /&gt;
&lt;br /&gt;
Funktioniert das System mal gerade nicht, kann immer noch direkt am Thermostat die Zieltemperatur per Rad eingestellt werden. Man darf dann nicht vergessen, das wieder runter auf 17° zu stellen.&lt;br /&gt;
&lt;br /&gt;
Die 17°, die wir da beim Thermostat eingestellt haben, ist also die Midnesttemperatur, die wir nicht unterschreiten wollen, da es sonst mit der Luftfeuchtigkeit und Schimmel Probleme geben könnte.&lt;br /&gt;
&lt;br /&gt;
=== Elektronik ===&lt;br /&gt;
&lt;br /&gt;
Die Heizung wird von einem Raspberry-Pi über Onewire gesteuert dabei werden die Sensoren und das Thermostat verwendet die schon &lt;br /&gt;
bei [[Kuschelig]] zum Einsatz kamen.&lt;br /&gt;
Sowohl das Thermostat und die Sensoren als auch der Raspberry-Pi werden über die 5-Volt und Masse Leitung der Onewire-Verbindung mit Strom versorgt.&lt;br /&gt;
&lt;br /&gt;
=== Sensoren ===&lt;br /&gt;
&lt;br /&gt;
Die One-Wire Sensoren mit ihren IDs, die überall im Space verteilt sind:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!   ID              !!  Ort  &lt;br /&gt;
|-&lt;br /&gt;
|   10-00080181e1cf ||  Küche: Heizung Vorlauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dcbf7e ||  Küche: Heizung Rücklauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dd1380 ||  Heizung Rücklauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-00080200db39 ||  Heizung Vorlauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-0008020165f9 ||  Küche: an der Decke&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFccbb;&amp;quot;|   22-0000000ed18a ||style=&amp;quot;background-color:#FFccbb;&amp;quot;|  beim Noklab-Gemälde (unzuverlässig)&lt;br /&gt;
|-&lt;br /&gt;
|   28-000001c75bf1 ||  in der Mitte oben am großen Fenster&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-000001c77c5e ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  im Spacemaster-Regal neben der Pumpe&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-00000558acfa ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  an der Decke&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die rosa hervorgehobenen Sensoren werden für die Bestimmung der Raumtemperatur aktuell verwendet.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise der Software ==&lt;br /&gt;
&lt;br /&gt;
Türstatus-, Sensorabfrage und -Logging sowie das Auslösen der Boost-Funktion des Heizungsventils geschieht über die Skripte auf &#039;&#039;&#039;pyro&#039;&#039;&#039;, die in &amp;lt;code&amp;gt;/root/pyro/heizung/&amp;lt;/code&amp;gt; liegen, von &amp;lt;code&amp;gt;/bin&amp;lt;/code&amp;gt; aus verlinkt sind und über die crontab vom Benutzer root regelmäßig gestartet werden. Die aktuelle Raumtemperatur wird im Moment als Minimum zweier Sensoren in Raum01 ermittelt, wobei „Ausreißer“ (wenn ein Sensor z.B. mal gerade 85° sagt) rausgefiltert werden. Diese Scripte stehen unter Versionskontrolle: git.cccgoe.de.&lt;br /&gt;
&lt;br /&gt;
Ob die Boost-Funktion der Heizung ausgelöst werden soll oder nicht, entscheidet das regelmäßig laufende &amp;lt;code&amp;gt;boostiftoocold&amp;lt;/code&amp;gt;-Skript. Dieses vergleicht eine Ist-Temperatur mit einer on-the-fly bestimten Soll-Temperatur, die das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript berechnet; denn das verwaltet all die Vorgaben und kann bestimmen welche Temperatur wann mindestens erreicht sein muss, damit die Ziele erfüllt werden können.&lt;br /&gt;
&lt;br /&gt;
Auf &#039;&#039;&#039;pyro&#039;&#039;&#039; läuft auch der XMPP-Bot unter dem User &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt;. Der Bot wird aktuell automatisch nach dem Booten über &amp;lt;code&amp;gt;cron&amp;lt;/code&amp;gt; gestartet. Dessen Python-Code liegt im Heimverzeichnis von &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt; und steht unter Versionskontrolle (bitbucket-Projekt von defnull).&lt;br /&gt;
&lt;br /&gt;
Der Chat-Bot selbst macht gar nicht viel. Er liest die aktuelle Temperatur von &amp;lt;code&amp;gt;/var/therm/now&amp;lt;/code&amp;gt; und ruft das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript auf, um die Temperaturen und Zeiten festzulegen und anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
Diejenigen, die Änderungen an dem Jabber Bot vornehmen wollen, fragen defnull am besten nach Schreibzugriff auf das entsprechende git Repo. Nach Änderungen an diesem Repo kann man dem Bot per &amp;quot;reload&amp;quot; sagen, dass er sich neustarten soll. Dabei updatet er sich auch.&lt;br /&gt;
&lt;br /&gt;
=== Abschaltautomatiken ===&lt;br /&gt;
&lt;br /&gt;
Wir wollen nicht umsonst heizen. Deswegen gibt es zwei Automatiken, die die Heizung abschalten können, ohne dabei zukünftige Heizpläne zu beeinflussen:&lt;br /&gt;
&lt;br /&gt;
* Fall „Keiner ist gekommen“: Wenn die Zeit eines bestimmten Temperatur-Ziels erreicht wurde, die Wohnungstür aber noch geschlossen ist, wird automatisch ein Abschalt-Event für 2 Stunden später eingefügt (quasi &amp;lt;code&amp;gt;!kuschelig off 2h&amp;lt;/code&amp;gt;). Kommt man also etwas später und möchte es es warm halten, muss man manuell dieses Abschalt-Event entfernen, damit die Heizung nicht einfach ausgeht. Ja, das ist suboptimal und könnte noch verbessert werden.&lt;br /&gt;
* Fall „Keiner ist mehr da“: Wenn das Heizsystem mitbekommt, dass die Tür von einem offenen in den geschlossenen Zustand wechselt, dann wird automatisch quasi ein &amp;lt;code&amp;gt;!kuschelig off&amp;lt;/code&amp;gt; ausgelöst.&lt;br /&gt;
&lt;br /&gt;
Damit das mit der Türstatusabfrage klappt, muss auf &#039;&#039;&#039;brickme&#039;&#039;&#039; der entsprechende Türstatus-Abfrage Dienst laufen.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;Pyro scheint neuerdings nicht lange &amp;quot;durchzuhalten&amp;quot; (ist dann nicht mehr erreichbar)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Der Boost wird nicht wie erwartet alle 6 Minuten sondern eher im 10-Minuten-Takt ausgelöst. Es dauert also länger, bis die Zieltemperatur erreicht ist, wenn sie überhaupt erreicht werden kann. Keine Ahnung warum. In der crontab von root steht das &amp;lt;code&amp;gt;boostiftoocold&amp;lt;/code&amp;gt;-Skript so drin, dass es alle 6 Minuten gestartet werden müsste.&amp;lt;/s&amp;gt;&lt;br /&gt;
Das Problem war das ein von /bin/therm-boost-fg angelegtes lockfile für 9 minuten existierte obwohl es eigentlich nur 5minuten 30 sekunden leben&lt;br /&gt;
sollte.&lt;br /&gt;
Das Problem müsste behoben sein ich habe es aber noch nicht getestet.&lt;br /&gt;
* &amp;lt;s&amp;gt;Der Bot fliegt noch regelmäßig aus dem MUC raus. Möglicherweise bekommt der Bot vom MUC eine Nachricht, die er nicht parsen kann (hab da eine Fehlermeldung in der screen-Session gesehen, die auf ein fehlendes Anführungszeichen hindeutet) und will dies als Fehlermeldung dem MUC berichten, welcher darauf den Bot rausschmeißt.&amp;lt;/s&amp;gt;&lt;br /&gt;
Ich denke der fehler müsste erstmal behoben sein ich habe in /lib/python3.4/site-packages/sleekxmpp/stanza/rootstanza.py die Zeilen 75-79 auskommentiert&lt;br /&gt;
so das der bot keine Fehlermeldung mehr sendet wenn er eine Nachricht für ungültig hält.&lt;br /&gt;
Eigentlich müsste es aber eine schönere Lösung für das Problem geben.&lt;br /&gt;
* Bessere Fehlerbehandlung: Beispielsweise wird die Abschaltautomatik ohne irgendeine Art der Beschwerde ausgehebelt, wenn der Türstatus-Service nicht läuft. Wir müssten uns mal überlegen, wie wir solche Fehler sichtbar machen können.&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9577</id>
		<title>Kuschelig2.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9577"/>
		<updated>2015-02-25T17:58:03Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Funktionsweise der Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kuschelig 2.0 ist jetzt im Testbetrieb und ersetzt damit die [[Kuschelig|alte Heizungssteuerung]]. Sie läuft auf einem Raspberry Pi.&lt;br /&gt;
Zur Ansteuerung der Thermostate und zum Auslesen der Temperatursensoren werden Linux Kernelmodule für &lt;br /&gt;
Onewire verwendet. Die Steuerung ist weiterhin mit einem Jabberbot möglich.&lt;br /&gt;
Dieser läuft direkt auf dem Raspberry Pi und ist mit SleekXMPP in Python implementiert.&lt;br /&gt;
&lt;br /&gt;
== Heizungssteuerung über Chat-Bot ==&lt;br /&gt;
&lt;br /&gt;
Die Heizung kann über den Jabber bot mit der Jabber ID &#039;&#039;&#039;nokbot@cccgoe.de&#039;&#039;&#039; oder alternativ aus dem MUC (&#039;&#039;&#039;heizung&#039;&#039;&#039;) gesteuert werden. &lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Kommandos beim Heizungs-Bot sind folgende:&lt;br /&gt;
&lt;br /&gt;
* help – gibt Informationen zu einem Kommando&lt;br /&gt;
* status – gibt die aktuelle Raumtemperatur and und Einträge im Heizplan, falls vorhanden&lt;br /&gt;
* kuschelig – Einträge zum Heizplan hinzufügen&lt;br /&gt;
* kuschdel – Einträge aus dem Heizplan entfernen&lt;br /&gt;
&lt;br /&gt;
Wenn man es einfach nur warm haben will, so schnell es nur geht, kann &amp;lt;code&amp;gt;kuschelig&amp;lt;/code&amp;gt; ohne Parameter aufgerufen werden. Das ist dann äquivalent zu &amp;lt;code&amp;gt;kuschelig on&amp;lt;/code&amp;gt;. Dementsprechend gibt es auch &amp;lt;code&amp;gt;kuschelig off&amp;lt;/code&amp;gt;. Statt on/off lässt sich auch eine Temperatur zwischen 17-24 Grad Celsius angeben. Diese Befehle ohne eine Zeitangabe bedeuten immer &amp;quot;so schnell wie möglich&amp;quot; und überschreiben gegebenenfalls eine schon andere vorhandene Vorgabe.&lt;br /&gt;
&lt;br /&gt;
Wenn man sich entschließt, zu einer bestimmten Uhrzeit heute oder morgen im Noklab zu erscheinen, kann das kuschelig-Kommando noch um diese Zeit ergänzt werden. Wird zum Beispiel folgender Befehl eingegeben&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00&lt;br /&gt;
&lt;br /&gt;
dann versucht das Heizsystem die gewünschte Temperatur von 21°C bis 19 Uhr zu erreichen. Dazu muss dieses Ziel allerdings früh genug bekannt sein. Andere Tage lassen sich auch angeben. Nur muss man dabei etwas aufpassen, weil der kuschelg-Befehl Parameter anhand von Leerzeichen voneinander unterscheided. Man muss ein Datum gegebenenfalls in Anführungszeichen setzen:&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00 tomorrow&lt;br /&gt;
 !kuschelig 21 19:00 &amp;quot;Feb 24&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Über das status-Kommando lässt sich eine Liste der Einträge, wann welche Temperatur erreicht werden soll, anzeigen:&lt;br /&gt;
&lt;br /&gt;
 !status&lt;br /&gt;
&lt;br /&gt;
Ohne weitere Optionen werden aber nur maximal die ersten drei Einträge angezeigt. Mit&lt;br /&gt;
&lt;br /&gt;
 !status all&lt;br /&gt;
&lt;br /&gt;
bekommt man dann alle Einträge im Heizplan zu sehen.&lt;br /&gt;
&lt;br /&gt;
Zum Löschen der Einträge kann das Kommando &amp;lt;code&amp;gt;kuschdel&amp;lt;/code&amp;gt; benutzt werden. Es erwartet einen oder mehrere Indides für die zu löschenden Einträge als einen Parameter. Beispiel:&lt;br /&gt;
&lt;br /&gt;
 !kuschdel 1&lt;br /&gt;
 !kuschdel 2,3&lt;br /&gt;
&lt;br /&gt;
Man achte darauf, dass in der Liste der Indizes kein Leerzeichen enthalten ist. Sonst müsste man wieder die Anführungszeichen bemühen.&lt;br /&gt;
&lt;br /&gt;
== Statusanzeige per Ampel ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ampel2.jpg|thumb|50px]]&lt;br /&gt;
Im Space befindet sich im Regal die &amp;quot;Ampel&amp;quot; mit aktuell fünf Lampen. Die oberen zwei davon zeigen den Status der Heizung an. Wenn alle Lampen aus sind, soll nur die Basis-Temperatur (17°C) gehalten werden. Wenn eine der beiden Lampen an ist, ist die Heizung aktiv. Die obere, grüne Lampe leuchtet, wenn die Raumtemperatur größer oder gleich der Soll-Temperatur ist. Die gelbe Lampe darunter leuchtet, wenn die Soll-Temperatur noch nicht erreucht wurde und noch weiter geheizt werden muss.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Segment !! leuchtet, falls…&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #44FF44;&amp;quot;| 1. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;lt;= now&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #FFDD44;&amp;quot;| 2. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;gt; now&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Folgende Hardware ist im Einsatz:&lt;br /&gt;
&lt;br /&gt;
=== Thermostat ===&lt;br /&gt;
&lt;br /&gt;
An der Heizung ist ein digitaler Thermostat, bei dem eine Zieltemperatur über ein Rad eingestellt werden kann. Dieser sollte im Modus &amp;quot;Manu&amp;quot; für &amp;quot;manuell&amp;quot; bleiben. Der Modus &amp;quot;Auto&amp;quot; ist nämlich dazu da, per Zeitschaltung verschiedene Temperaturen anzufahren. Das erfordert allerdings, dass man den auch richtig programmiert. Es passt auch nicht ganz zu unseren Gewohnheiten, weil nicht immer jemand da ist und wenn doch, dann vielleicht auch mal bis spät in die Nacht.&lt;br /&gt;
&lt;br /&gt;
Das Thermostat ist gleichzeitig ein 1-Wire-Endgerät, worüber man für 5 Minuten das Ventil voll aufdrehen kann (&amp;quot;boost&amp;quot;). Ziel von Kuschelig 2.0 ist es, über diese Boost-Funktion und in der Wohnung verteilte 1-Wire-Temperatursensoren die Regelung selbst zu machen, so dass man schon bevor man in den Space reingeht, die Temperatur über einen Chat-Bot erfragen und beinflussen kann. Im Winter soll man also, bevor man noch in den Raum reingeht, die Zieltemperatur einstellen können, damit man sich hier nicht erst einen abfrieren muss. Damit nicht immer geheizt wird, sollte aber die Zieltemperatur beim Thermostat selbst bei 17° liegen.&lt;br /&gt;
&lt;br /&gt;
Funktioniert das System mal gerade nicht, kann immer noch direkt am Thermostat die Zieltemperatur per Rad eingestellt werden. Man darf dann nicht vergessen, das wieder runter auf 17° zu stellen.&lt;br /&gt;
&lt;br /&gt;
Die 17°, die wir da beim Thermostat eingestellt haben, ist also die Midnesttemperatur, die wir nicht unterschreiten wollen, da es sonst mit der Luftfeuchtigkeit und Schimmel Probleme geben könnte.&lt;br /&gt;
&lt;br /&gt;
=== Elektronik ===&lt;br /&gt;
&lt;br /&gt;
Die Heizung wird von einem Raspberry-Pi über Onewire gesteuert dabei werden die Sensoren und das Thermostat verwendet die schon &lt;br /&gt;
bei [[Kuschelig]] zum Einsatz kamen.&lt;br /&gt;
Sowohl das Thermostat und die Sensoren als auch der Raspberry-Pi werden über die 5-Volt und Masse Leitung der Onewire-Verbindung mit Strom versorgt.&lt;br /&gt;
&lt;br /&gt;
=== Sensoren ===&lt;br /&gt;
&lt;br /&gt;
Die One-Wire Sensoren mit ihren IDs, die überall im Space verteilt sind:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!   ID              !!  Ort  &lt;br /&gt;
|-&lt;br /&gt;
|   10-00080181e1cf ||  Küche: Heizung&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dcbf7e ||  Küche: Heizung&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dd1380 ||  Heizung Rücklauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-00080200db39 ||  Heizung Vorlauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-0008020165f9 ||  Küche: an der Decke&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFccbb;&amp;quot;|   22-0000000ed18a ||style=&amp;quot;background-color:#FFccbb;&amp;quot;|  beim Noklab-Gemälde (unzuverlässig)&lt;br /&gt;
|-&lt;br /&gt;
|   28-000001c75bf1 ||  in der Mitte oben am großen Fenster&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-000001c77c5e ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  im Spacemaster-Regal neben der Pumpe&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-00000558acfa ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  an der Decke&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die rosa hervorgehobenen Sensoren werden für die Bestimmung der Raumtemperatur aktuell verwendet.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise der Software ==&lt;br /&gt;
&lt;br /&gt;
Türstatus-, Sensorabfrage und -Logging sowie das Auslösen der Boost-Funktion des Heizungsventils geschieht über die Skripte auf &#039;&#039;&#039;pyro&#039;&#039;&#039;, die in &amp;lt;code&amp;gt;/root/pyro/heizung/&amp;lt;/code&amp;gt; liegen, von &amp;lt;code&amp;gt;/bin&amp;lt;/code&amp;gt; aus verlinkt sind und über die crontab vom Benutzer root regelmäßig gestartet werden. Die aktuelle Raumtemperatur wird im Moment als Minimum zweier Sensoren in Raum01 ermittelt, wobei „Ausreißer“ (wenn ein Sensor z.B. mal gerade 85° sagt) rausgefiltert werden. Diese Scripte stehen unter Versionskontrolle: git.cccgoe.de.&lt;br /&gt;
&lt;br /&gt;
Ob die Boost-Funktion der Heizung ausgelöst werden soll oder nicht, entscheidet das regelmäßig laufende &amp;lt;code&amp;gt;boostiftoocold&amp;lt;/code&amp;gt;-Skript. Dieses vergleicht eine Ist-Temperatur mit einer on-the-fly bestimten Soll-Temperatur, die das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript berechnet; denn das verwaltet all die Vorgaben und kann bestimmen welche Temperatur wann mindestens erreicht sein muss, damit die Ziele erfüllt werden können.&lt;br /&gt;
&lt;br /&gt;
Auf &#039;&#039;&#039;pyro&#039;&#039;&#039; läuft auch der XMPP-Bot unter dem User &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt;. Der Bot wird aktuell automatisch nach dem Booten über &amp;lt;code&amp;gt;cron&amp;lt;/code&amp;gt; gestartet. Dessen Python-Code liegt im Heimverzeichnis von &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt; und steht unter Versionskontrolle (bitbucket-Projekt von defnull).&lt;br /&gt;
&lt;br /&gt;
Der Chat-Bot selbst macht gar nicht viel. Er liest die aktuelle Temperatur von &amp;lt;code&amp;gt;/var/therm/now&amp;lt;/code&amp;gt; und ruft das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript auf, um die Temperaturen und Zeiten festzulegen und anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
Diejenigen, die Änderungen an dem Jabber Bot vornehmen wollen, fragen defnull am besten nach Schreibzugriff auf das entsprechende git Repo. Nach Änderungen an diesem Repo kann man dem Bot per &amp;quot;reload&amp;quot; sagen, dass er sich neustarten soll. Dabei updatet er sich auch.&lt;br /&gt;
&lt;br /&gt;
=== Abschaltautomatiken ===&lt;br /&gt;
&lt;br /&gt;
Wir wollen nicht umsonst heizen. Deswegen gibt es zwei Automatiken, die die Heizung abschalten können, ohne dabei zukünftige Heizpläne zu beeinflussen:&lt;br /&gt;
&lt;br /&gt;
* Fall „Keiner ist gekommen“: Wenn die Zeit eines bestimmten Temperatur-Ziels erreicht wurde, die Wohnungstür aber noch geschlossen ist, wird automatisch ein Abschalt-Event für 2 Stunden später eingefügt (quasi &amp;lt;code&amp;gt;!kuschelig off 2h&amp;lt;/code&amp;gt;). Kommt man also etwas später und möchte es es warm halten, muss man manuell dieses Abschalt-Event entfernen, damit die Heizung nicht einfach ausgeht. Ja, das ist suboptimal und könnte noch verbessert werden.&lt;br /&gt;
* Fall „Keiner ist mehr da“: Wenn das Heizsystem mitbekommt, dass die Tür von einem offenen in den geschlossenen Zustand wechselt, dann wird automatisch quasi ein &amp;lt;code&amp;gt;!kuschelig off&amp;lt;/code&amp;gt; ausgelöst.&lt;br /&gt;
&lt;br /&gt;
Damit das mit der Türstatusabfrage klappt, muss auf &#039;&#039;&#039;brickme&#039;&#039;&#039; der entsprechende Türstatus-Abfrage Dienst laufen.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;Pyro scheint neuerdings nicht lange &amp;quot;durchzuhalten&amp;quot; (ist dann nicht mehr erreichbar)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Der Boost wird nicht wie erwartet alle 6 Minuten sondern eher im 10-Minuten-Takt ausgelöst. Es dauert also länger, bis die Zieltemperatur erreicht ist, wenn sie überhaupt erreicht werden kann. Keine Ahnung warum. In der crontab von root steht das &amp;lt;code&amp;gt;boostiftoocold&amp;lt;/code&amp;gt;-Skript so drin, dass es alle 6 Minuten gestartet werden müsste.&amp;lt;/s&amp;gt;&lt;br /&gt;
Das Problem war das ein von /bin/therm-boost-fg angelegtes lockfile für 9 minuten existierte obwohl es eigentlich nur 5minuten 30 sekunden leben&lt;br /&gt;
sollte.&lt;br /&gt;
Das Problem müsste behoben sein ich habe es aber noch nicht getestet.&lt;br /&gt;
* &amp;lt;s&amp;gt;Der Bot fliegt noch regelmäßig aus dem MUC raus. Möglicherweise bekommt der Bot vom MUC eine Nachricht, die er nicht parsen kann (hab da eine Fehlermeldung in der screen-Session gesehen, die auf ein fehlendes Anführungszeichen hindeutet) und will dies als Fehlermeldung dem MUC berichten, welcher darauf den Bot rausschmeißt.&amp;lt;/s&amp;gt;&lt;br /&gt;
Ich denke der fehler müsste erstmal behoben sein ich habe in /lib/python3.4/site-packages/sleekxmpp/stanza/rootstanza.py die Zeilen 75-79 auskommentiert&lt;br /&gt;
so das der bot keine Fehlermeldung mehr sendet wenn er eine Nachricht für ungültig hält.&lt;br /&gt;
Eigentlich müsste es aber eine schönere Lösung für das Problem geben.&lt;br /&gt;
* Bessere Fehlerbehandlung: Beispielsweise wird die Abschaltautomatik ohne irgendeine Art der Beschwerde ausgehebelt, wenn der Türstatus-Service nicht läuft. Wir müssten uns mal überlegen, wie wir solche Fehler sichtbar machen können.&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9560</id>
		<title>Kuschelig2.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9560"/>
		<updated>2015-02-24T11:20:49Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Abschaltautomatiken */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kuschelig 2.0 ist jetzt im Testbetrieb und ersetzt damit die [[Kuschelig|alte Heizungssteuerung]]. Sie läuft auf einem Raspberry Pi.&lt;br /&gt;
Zur Ansteuerung der Thermostate und zum Auslesen der Temperatursensoren werden Linux Kernelmodule für &lt;br /&gt;
Onewire verwendet. Die Steuerung ist weiterhin mit einem Jabberbot möglich.&lt;br /&gt;
Dieser läuft direkt auf dem Raspberry Pi und ist mit SleekXMPP in Python implementiert.&lt;br /&gt;
&lt;br /&gt;
== Heizungssteuerung über Chat-Bot ==&lt;br /&gt;
&lt;br /&gt;
Die Heizung kann über den Jabber bot mit der Jabber ID &#039;&#039;&#039;nokbot@cccgoe.de&#039;&#039;&#039; oder alternativ aus dem MUC (&#039;&#039;&#039;heizung&#039;&#039;&#039;) gesteuert werden. &lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Kommandos beim Heizungs-Bot sind folgende:&lt;br /&gt;
&lt;br /&gt;
* help – gibt Informationen zu einem Kommando&lt;br /&gt;
* status – gibt die aktuelle Raumtemperatur and und Einträge im Heizplan, falls vorhanden&lt;br /&gt;
* kuschelig – Einträge zum Heizplan hinzufügen&lt;br /&gt;
* kuschdel – Einträge aus dem Heizplan entfernen&lt;br /&gt;
&lt;br /&gt;
Wenn man es einfach nur warm haben will, so schnell es nur geht, kann &amp;lt;code&amp;gt;kuschelig&amp;lt;/code&amp;gt; ohne Parameter aufgerufen werden. Das ist dann äquivalent zu &amp;lt;code&amp;gt;kuschelig on&amp;lt;/code&amp;gt;. Dementsprechend gibt es auch &amp;lt;code&amp;gt;kuschelig off&amp;lt;/code&amp;gt;. Statt on/off lässt sich auch eine Temperatur zwischen 17-24 Grad Celsius angeben. Diese Befehle ohne eine Zeitangabe bedeuten immer &amp;quot;so schnell wie möglich&amp;quot; und überschreiben gegebenenfalls eine schon andere vorhandene Vorgabe.&lt;br /&gt;
&lt;br /&gt;
Wenn man sich entschließt, zu einer bestimmten Uhrzeit heute oder morgen im Noklab zu erscheinen, kann das kuschelig-Kommando noch um diese Zeit ergänzt werden. Wird zum Beispiel folgender Befehl eingegeben&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00&lt;br /&gt;
&lt;br /&gt;
dann versucht das Heizsystem die gewünschte Temperatur von 21°C bis 19 Uhr zu erreichen. Dazu muss dieses Ziel allerdings früh genug bekannt sein. Andere Tage lassen sich auch angeben. Nur muss man dabei etwas aufpassen, weil der kuschelg-Befehl Parameter anhand von Leerzeichen voneinander unterscheided. Man muss ein Datum gegebenenfalls in Anführungszeichen setzen:&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00 tomorrow&lt;br /&gt;
 !kuschelig 21 19:00 &amp;quot;Feb 24&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Über das status-Kommando lässt sich eine Liste der Einträge, wann welche Temperatur erreicht werden soll, anzeigen:&lt;br /&gt;
&lt;br /&gt;
 !status&lt;br /&gt;
&lt;br /&gt;
Ohne weitere Optionen werden aber nur maximal die ersten drei Einträge angezeigt. Mit&lt;br /&gt;
&lt;br /&gt;
 !status all&lt;br /&gt;
&lt;br /&gt;
bekommt man dann alle Einträge im Heizplan zu sehen.&lt;br /&gt;
&lt;br /&gt;
Zum Löschen der Einträge kann das Kommando &amp;lt;code&amp;gt;kuschdel&amp;lt;/code&amp;gt; benutzt werden. Es erwartet einen oder mehrere Indides für die zu löschenden Einträge als einen Parameter. Beispiel:&lt;br /&gt;
&lt;br /&gt;
 !kuschdel 1&lt;br /&gt;
 !kuschdel 2,3&lt;br /&gt;
&lt;br /&gt;
Man achte darauf, dass in der Liste der Indizes kein Leerzeichen enthalten ist. Sonst müsste man wieder die Anführungszeichen bemühen.&lt;br /&gt;
&lt;br /&gt;
== Statusanzeige per Ampel ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ampel2.jpg|thumb|50px]]&lt;br /&gt;
Im Space befindet sich im Regal die &amp;quot;Ampel&amp;quot; mit aktuell fünf Lampen. Die oberen zwei davon zeigen den Status der Heizung an. Wenn alle Lampen aus sind, soll nur die Basis-Temperatur (17°C) gehalten werden. Wenn eine der beiden Lampen an ist, ist die Heizung aktiv. Die obere, grüne Lampe leuchtet, wenn die Raumtemperatur größer oder gleich der Soll-Temperatur ist. Die gelbe Lampe darunter leuchtet, wenn die Soll-Temperatur noch nicht erreucht wurde und noch weiter geheizt werden muss.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Segment !! leuchtet, falls…&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #44FF44;&amp;quot;| 1. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;lt;= now&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #FFDD44;&amp;quot;| 2. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;gt; now&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Folgende Hardware ist im Einsatz:&lt;br /&gt;
&lt;br /&gt;
=== Thermostat ===&lt;br /&gt;
&lt;br /&gt;
An der Heizung ist ein digitaler Thermostat, bei dem eine Zieltemperatur über ein Rad eingestellt werden kann. Dieser sollte im Modus &amp;quot;Manu&amp;quot; für &amp;quot;manuell&amp;quot; bleiben. Der Modus &amp;quot;Auto&amp;quot; ist nämlich dazu da, per Zeitschaltung verschiedene Temperaturen anzufahren. Das erfordert allerdings, dass man den auch richtig programmiert. Es passt auch nicht ganz zu unseren Gewohnheiten, weil nicht immer jemand da ist und wenn doch, dann vielleicht auch mal bis spät in die Nacht.&lt;br /&gt;
&lt;br /&gt;
Das Thermostat ist gleichzeitig ein 1-Wire-Endgerät, worüber man für 5 Minuten das Ventil voll aufdrehen kann (&amp;quot;boost&amp;quot;). Ziel von Kuschelig 2.0 ist es, über diese Boost-Funktion und in der Wohnung verteilte 1-Wire-Temperatursensoren die Regelung selbst zu machen, so dass man schon bevor man in den Space reingeht, die Temperatur über einen Chat-Bot erfragen und beinflussen kann. Im Winter soll man also, bevor man noch in den Raum reingeht, die Zieltemperatur einstellen können, damit man sich hier nicht erst einen abfrieren muss. Damit nicht immer geheizt wird, sollte aber die Zieltemperatur beim Thermostat selbst bei 17° liegen.&lt;br /&gt;
&lt;br /&gt;
Funktioniert das System mal gerade nicht, kann immer noch direkt am Thermostat die Zieltemperatur per Rad eingestellt werden. Man darf dann nicht vergessen, das wieder runter auf 17° zu stellen.&lt;br /&gt;
&lt;br /&gt;
Die 17°, die wir da beim Thermostat eingestellt haben, ist also die Midnesttemperatur, die wir nicht unterschreiten wollen, da es sonst mit der Luftfeuchtigkeit und Schimmel Probleme geben könnte.&lt;br /&gt;
&lt;br /&gt;
=== Elektronik ===&lt;br /&gt;
&lt;br /&gt;
Die Heizung wird von einem Raspberry-Pi über Onewire gesteuert dabei werden die Sensoren und das Thermostat verwendet die schon &lt;br /&gt;
bei [[Kuschelig]] zum Einsatz kamen.&lt;br /&gt;
Sowohl das Thermostat und die Sensoren als auch der Raspberry-Pi werden über die 5-Volt und Masse Leitung der Onewire-Verbindung mit Strom versorgt.&lt;br /&gt;
&lt;br /&gt;
=== Sensoren ===&lt;br /&gt;
&lt;br /&gt;
Die One-Wire Sensoren mit ihren IDs, die überall im Space verteilt sind:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!   ID              !!  Ort  &lt;br /&gt;
|-&lt;br /&gt;
|   10-00080181e1cf ||  Küche: Heizung&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dcbf7e ||  Küche: Heizung&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dd1380 ||  Heizung Rücklauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-00080200db39 ||  Heizung Vorlauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-0008020165f9 ||  Küche: an der Decke&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFccbb;&amp;quot;|   22-0000000ed18a ||style=&amp;quot;background-color:#FFccbb;&amp;quot;|  beim Noklab-Gemälde (unzuverlässig)&lt;br /&gt;
|-&lt;br /&gt;
|   28-000001c75bf1 ||  in der Mitte oben am großen Fenster&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-000001c77c5e ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  im Spacemaster-Regal neben der Pumpe&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-00000558acfa ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  an der Decke&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die rosa hervorgehobenen Sensoren werden für die Bestimmung der Raumtemperatur aktuell verwendet.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise der Software ==&lt;br /&gt;
&lt;br /&gt;
Türstatus-, Sensorabfrage und -Logging sowie das Auslösen der Boost-Funktion des Heizungsventils geschieht über die Skripte auf &#039;&#039;&#039;pyro&#039;&#039;&#039;, die in &amp;lt;code&amp;gt;/root/pyro/heizung/&amp;lt;/code&amp;gt; liegen, von &amp;lt;code&amp;gt;/bin&amp;lt;/code&amp;gt; aus verlinkt sind und über die crontab vom Benutzer root regelmäßig gestartet werden. Die aktuelle Raumtemperatur wird im Moment als Mittelung verschiedener Sensoren in Raum01 ermittelt, wobei „Ausreißer“ (wenn ein Sensor z.B. mal gerade 85° sagt) rausgefiltert werden. Diese Scripte stehen unter Versionskontrolle: git.cccgoe.de.&lt;br /&gt;
&lt;br /&gt;
Ob die Boost-Funktion der Heizung ausgelöst werden soll oder nicht, entscheidet das regelmäßig laufende &amp;lt;code&amp;gt;boostiftoocold&amp;lt;/code&amp;gt;-Skript. Dieses vergleicht eine Ist-Temperatur mit einer on-the-fly bestimten Soll-Temperatur, die das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript berechnet; denn das verwaltet all die Vorgaben und kann bestimmen welche Temperatur wann mindestens erreicht sein muss, damit die Ziele erfüllt werden können.&lt;br /&gt;
&lt;br /&gt;
Auf &#039;&#039;&#039;pyro&#039;&#039;&#039; läuft auch der XMPP-Bot unter dem User &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt;. Der Bot wird aktuell automatisch nach dem Booten über &amp;lt;code&amp;gt;cron&amp;lt;/code&amp;gt; gestartet. Dessen Python-Code liegt im Heimverzeichnis von &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt; und steht unter Versionskontrolle (bitbucket-Projekt von defnull).&lt;br /&gt;
&lt;br /&gt;
Der Chat-Bot selbst macht gar nicht viel. Er liest die aktuelle Temperatur von &amp;lt;code&amp;gt;/var/therm/now&amp;lt;/code&amp;gt; und ruft das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript auf, um die Temperaturen und Zeiten festzulegen und anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
Diejenigen, die Änderungen an dem Jabber Bot vornehmen wollen, fragen defnull am besten nach Schreibzugriff auf das entsprechende git Repo. Nach Änderungen an diesem Repo kann man dem Bot per &amp;quot;reload&amp;quot; sagen, dass er sich neustarten soll. Dabei updatet er sich auch.&lt;br /&gt;
&lt;br /&gt;
=== Abschaltautomatiken ===&lt;br /&gt;
&lt;br /&gt;
Wir wollen nicht umsonst heizen. Deswegen gibt es zwei Automatiken, die die Heizung abschalten können, ohne dabei zukünftige Heizpläne zu beeinflussen:&lt;br /&gt;
&lt;br /&gt;
* Fall „Keiner ist gekommen“: Wenn die Zeit eines bestimmten Temperatur-Ziels erreicht wurde, die Wohnungstür aber noch geschlossen ist, wird automatisch ein Abschalt-Event für 2 Stunden später eingefügt (quasi &amp;lt;code&amp;gt;!kuschelig off 2h&amp;lt;/code&amp;gt;). Kommt man also etwas später und möchte es es warm halten, muss man manuell dieses Abschalt-Event entfernen, damit die Heizung nicht einfach ausgeht. Ja, das ist suboptimal und könnte noch verbessert werden.&lt;br /&gt;
* Fall „Keiner ist mehr da“: Wenn das Heizsystem mitbekommt, dass die Tür von einem offenen in den geschlossenen Zustand wechselt, dann wird automatisch quasi ein &amp;lt;code&amp;gt;!kuschelig off&amp;lt;/code&amp;gt; ausgelöst.&lt;br /&gt;
&lt;br /&gt;
Damit das mit der Türstatusabfrage klappt, muss auf &#039;&#039;&#039;brickme&#039;&#039;&#039; der entsprechende Türstatus-Abfrage Dienst laufen.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;Pyro scheint neuerdings nicht lange &amp;quot;durchzuhalten&amp;quot; (ist dann nicht mehr erreichbar)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Der Boost wird nicht wie erwartet alle 6 Minuten sondern eher im 10-Minuten-Takt ausgelöst. Es dauert also länger, bis die Zieltemperatur erreicht ist, wenn sie überhaupt erreicht werden kann. Keine Ahnung warum. In der crontab von root steht das &amp;lt;code&amp;gt;boostiftoocold&amp;lt;/code&amp;gt;-Skript so drin, dass es alle 6 Minuten gestartet werden müsste.&amp;lt;/s&amp;gt;&lt;br /&gt;
Das Problem war das ein von /bin/therm-boost-fg angelegtes lockfile für 9 minuten existierte obwohl es eigentlich nur 5minuten 30 sekunden leben&lt;br /&gt;
sollte.&lt;br /&gt;
Das Problem müsste behoben sein ich habe es aber noch nicht getestet.&lt;br /&gt;
* &amp;lt;s&amp;gt;Der Bot fliegt noch regelmäßig aus dem MUC raus. Möglicherweise bekommt der Bot vom MUC eine Nachricht, die er nicht parsen kann (hab da eine Fehlermeldung in der screen-Session gesehen, die auf ein fehlendes Anführungszeichen hindeutet) und will dies als Fehlermeldung dem MUC berichten, welcher darauf den Bot rausschmeißt.&amp;lt;/s&amp;gt;&lt;br /&gt;
Ich denke der fehler müsste erstmal behoben sein ich habe in /lib/python3.4/site-packages/sleekxmpp/stanza/rootstanza.py die Zeilen 75-79 auskommentiert&lt;br /&gt;
so das der bot keine Fehlermeldung mehr sendet wenn er eine Nachricht für ungültig hält.&lt;br /&gt;
Eigentlich müsste es aber eine schönere Lösung für das Problem geben.&lt;br /&gt;
* Bessere Fehlerbehandlung: Beispielsweise wird die Abschaltautomatik ohne irgendeine Art der Beschwerde ausgehebelt, wenn der Türstatus-Service nicht läuft. Wir müssten uns mal überlegen, wie wir solche Fehler sichtbar machen können.&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
	<entry>
		<id>https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9559</id>
		<title>Kuschelig2.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.cccgoe.de/index.php?title=Kuschelig2.0&amp;diff=9559"/>
		<updated>2015-02-24T11:18:21Z</updated>

		<summary type="html">&lt;p&gt;SebastianG: /* Funktionsweise der Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kuschelig 2.0 ist jetzt im Testbetrieb und ersetzt damit die [[Kuschelig|alte Heizungssteuerung]]. Sie läuft auf einem Raspberry Pi.&lt;br /&gt;
Zur Ansteuerung der Thermostate und zum Auslesen der Temperatursensoren werden Linux Kernelmodule für &lt;br /&gt;
Onewire verwendet. Die Steuerung ist weiterhin mit einem Jabberbot möglich.&lt;br /&gt;
Dieser läuft direkt auf dem Raspberry Pi und ist mit SleekXMPP in Python implementiert.&lt;br /&gt;
&lt;br /&gt;
== Heizungssteuerung über Chat-Bot ==&lt;br /&gt;
&lt;br /&gt;
Die Heizung kann über den Jabber bot mit der Jabber ID &#039;&#039;&#039;nokbot@cccgoe.de&#039;&#039;&#039; oder alternativ aus dem MUC (&#039;&#039;&#039;heizung&#039;&#039;&#039;) gesteuert werden. &lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Kommandos beim Heizungs-Bot sind folgende:&lt;br /&gt;
&lt;br /&gt;
* help – gibt Informationen zu einem Kommando&lt;br /&gt;
* status – gibt die aktuelle Raumtemperatur and und Einträge im Heizplan, falls vorhanden&lt;br /&gt;
* kuschelig – Einträge zum Heizplan hinzufügen&lt;br /&gt;
* kuschdel – Einträge aus dem Heizplan entfernen&lt;br /&gt;
&lt;br /&gt;
Wenn man es einfach nur warm haben will, so schnell es nur geht, kann &amp;lt;code&amp;gt;kuschelig&amp;lt;/code&amp;gt; ohne Parameter aufgerufen werden. Das ist dann äquivalent zu &amp;lt;code&amp;gt;kuschelig on&amp;lt;/code&amp;gt;. Dementsprechend gibt es auch &amp;lt;code&amp;gt;kuschelig off&amp;lt;/code&amp;gt;. Statt on/off lässt sich auch eine Temperatur zwischen 17-24 Grad Celsius angeben. Diese Befehle ohne eine Zeitangabe bedeuten immer &amp;quot;so schnell wie möglich&amp;quot; und überschreiben gegebenenfalls eine schon andere vorhandene Vorgabe.&lt;br /&gt;
&lt;br /&gt;
Wenn man sich entschließt, zu einer bestimmten Uhrzeit heute oder morgen im Noklab zu erscheinen, kann das kuschelig-Kommando noch um diese Zeit ergänzt werden. Wird zum Beispiel folgender Befehl eingegeben&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00&lt;br /&gt;
&lt;br /&gt;
dann versucht das Heizsystem die gewünschte Temperatur von 21°C bis 19 Uhr zu erreichen. Dazu muss dieses Ziel allerdings früh genug bekannt sein. Andere Tage lassen sich auch angeben. Nur muss man dabei etwas aufpassen, weil der kuschelg-Befehl Parameter anhand von Leerzeichen voneinander unterscheided. Man muss ein Datum gegebenenfalls in Anführungszeichen setzen:&lt;br /&gt;
&lt;br /&gt;
 !kuschelig 21 19:00 tomorrow&lt;br /&gt;
 !kuschelig 21 19:00 &amp;quot;Feb 24&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Über das status-Kommando lässt sich eine Liste der Einträge, wann welche Temperatur erreicht werden soll, anzeigen:&lt;br /&gt;
&lt;br /&gt;
 !status&lt;br /&gt;
&lt;br /&gt;
Ohne weitere Optionen werden aber nur maximal die ersten drei Einträge angezeigt. Mit&lt;br /&gt;
&lt;br /&gt;
 !status all&lt;br /&gt;
&lt;br /&gt;
bekommt man dann alle Einträge im Heizplan zu sehen.&lt;br /&gt;
&lt;br /&gt;
Zum Löschen der Einträge kann das Kommando &amp;lt;code&amp;gt;kuschdel&amp;lt;/code&amp;gt; benutzt werden. Es erwartet einen oder mehrere Indides für die zu löschenden Einträge als einen Parameter. Beispiel:&lt;br /&gt;
&lt;br /&gt;
 !kuschdel 1&lt;br /&gt;
 !kuschdel 2,3&lt;br /&gt;
&lt;br /&gt;
Man achte darauf, dass in der Liste der Indizes kein Leerzeichen enthalten ist. Sonst müsste man wieder die Anführungszeichen bemühen.&lt;br /&gt;
&lt;br /&gt;
== Statusanzeige per Ampel ==&lt;br /&gt;
&lt;br /&gt;
[[File:Ampel2.jpg|thumb|50px]]&lt;br /&gt;
Im Space befindet sich im Regal die &amp;quot;Ampel&amp;quot; mit aktuell fünf Lampen. Die oberen zwei davon zeigen den Status der Heizung an. Wenn alle Lampen aus sind, soll nur die Basis-Temperatur (17°C) gehalten werden. Wenn eine der beiden Lampen an ist, ist die Heizung aktiv. Die obere, grüne Lampe leuchtet, wenn die Raumtemperatur größer oder gleich der Soll-Temperatur ist. Die gelbe Lampe darunter leuchtet, wenn die Soll-Temperatur noch nicht erreucht wurde und noch weiter geheizt werden muss.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Segment !! leuchtet, falls…&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #44FF44;&amp;quot;| 1. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;lt;= now&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color: #FFDD44;&amp;quot;| 2. von oben || target &amp;gt; 17 &amp;amp;&amp;amp; target &amp;gt; now&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Folgende Hardware ist im Einsatz:&lt;br /&gt;
&lt;br /&gt;
=== Thermostat ===&lt;br /&gt;
&lt;br /&gt;
An der Heizung ist ein digitaler Thermostat, bei dem eine Zieltemperatur über ein Rad eingestellt werden kann. Dieser sollte im Modus &amp;quot;Manu&amp;quot; für &amp;quot;manuell&amp;quot; bleiben. Der Modus &amp;quot;Auto&amp;quot; ist nämlich dazu da, per Zeitschaltung verschiedene Temperaturen anzufahren. Das erfordert allerdings, dass man den auch richtig programmiert. Es passt auch nicht ganz zu unseren Gewohnheiten, weil nicht immer jemand da ist und wenn doch, dann vielleicht auch mal bis spät in die Nacht.&lt;br /&gt;
&lt;br /&gt;
Das Thermostat ist gleichzeitig ein 1-Wire-Endgerät, worüber man für 5 Minuten das Ventil voll aufdrehen kann (&amp;quot;boost&amp;quot;). Ziel von Kuschelig 2.0 ist es, über diese Boost-Funktion und in der Wohnung verteilte 1-Wire-Temperatursensoren die Regelung selbst zu machen, so dass man schon bevor man in den Space reingeht, die Temperatur über einen Chat-Bot erfragen und beinflussen kann. Im Winter soll man also, bevor man noch in den Raum reingeht, die Zieltemperatur einstellen können, damit man sich hier nicht erst einen abfrieren muss. Damit nicht immer geheizt wird, sollte aber die Zieltemperatur beim Thermostat selbst bei 17° liegen.&lt;br /&gt;
&lt;br /&gt;
Funktioniert das System mal gerade nicht, kann immer noch direkt am Thermostat die Zieltemperatur per Rad eingestellt werden. Man darf dann nicht vergessen, das wieder runter auf 17° zu stellen.&lt;br /&gt;
&lt;br /&gt;
Die 17°, die wir da beim Thermostat eingestellt haben, ist also die Midnesttemperatur, die wir nicht unterschreiten wollen, da es sonst mit der Luftfeuchtigkeit und Schimmel Probleme geben könnte.&lt;br /&gt;
&lt;br /&gt;
=== Elektronik ===&lt;br /&gt;
&lt;br /&gt;
Die Heizung wird von einem Raspberry-Pi über Onewire gesteuert dabei werden die Sensoren und das Thermostat verwendet die schon &lt;br /&gt;
bei [[Kuschelig]] zum Einsatz kamen.&lt;br /&gt;
Sowohl das Thermostat und die Sensoren als auch der Raspberry-Pi werden über die 5-Volt und Masse Leitung der Onewire-Verbindung mit Strom versorgt.&lt;br /&gt;
&lt;br /&gt;
=== Sensoren ===&lt;br /&gt;
&lt;br /&gt;
Die One-Wire Sensoren mit ihren IDs, die überall im Space verteilt sind:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!   ID              !!  Ort  &lt;br /&gt;
|-&lt;br /&gt;
|   10-00080181e1cf ||  Küche: Heizung&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dcbf7e ||  Küche: Heizung&lt;br /&gt;
|-&lt;br /&gt;
|   10-000801dd1380 ||  Heizung Rücklauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-00080200db39 ||  Heizung Vorlauf&lt;br /&gt;
|-&lt;br /&gt;
|   10-0008020165f9 ||  Küche: an der Decke&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFccbb;&amp;quot;|   22-0000000ed18a ||style=&amp;quot;background-color:#FFccbb;&amp;quot;|  beim Noklab-Gemälde (unzuverlässig)&lt;br /&gt;
|-&lt;br /&gt;
|   28-000001c75bf1 ||  in der Mitte oben am großen Fenster&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-000001c77c5e ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  im Spacemaster-Regal neben der Pumpe&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background-color:#FFbbFF;&amp;quot;|   28-00000558acfa ||style=&amp;quot;background-color:#FFbbFF;&amp;quot;|  an der Decke&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die rosa hervorgehobenen Sensoren werden für die Bestimmung der Raumtemperatur aktuell verwendet.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise der Software ==&lt;br /&gt;
&lt;br /&gt;
Türstatus-, Sensorabfrage und -Logging sowie das Auslösen der Boost-Funktion des Heizungsventils geschieht über die Skripte auf &#039;&#039;&#039;pyro&#039;&#039;&#039;, die in &amp;lt;code&amp;gt;/root/pyro/heizung/&amp;lt;/code&amp;gt; liegen, von &amp;lt;code&amp;gt;/bin&amp;lt;/code&amp;gt; aus verlinkt sind und über die crontab vom Benutzer root regelmäßig gestartet werden. Die aktuelle Raumtemperatur wird im Moment als Mittelung verschiedener Sensoren in Raum01 ermittelt, wobei „Ausreißer“ (wenn ein Sensor z.B. mal gerade 85° sagt) rausgefiltert werden. Diese Scripte stehen unter Versionskontrolle: git.cccgoe.de.&lt;br /&gt;
&lt;br /&gt;
Ob die Boost-Funktion der Heizung ausgelöst werden soll oder nicht, entscheidet das regelmäßig laufende &amp;lt;code&amp;gt;boostiftoocold&amp;lt;/code&amp;gt;-Skript. Dieses vergleicht eine Ist-Temperatur mit einer on-the-fly bestimten Soll-Temperatur, die das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript berechnet; denn das verwaltet all die Vorgaben und kann bestimmen welche Temperatur wann mindestens erreicht sein muss, damit die Ziele erfüllt werden können.&lt;br /&gt;
&lt;br /&gt;
Auf &#039;&#039;&#039;pyro&#039;&#039;&#039; läuft auch der XMPP-Bot unter dem User &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt;. Der Bot wird aktuell automatisch nach dem Booten über &amp;lt;code&amp;gt;cron&amp;lt;/code&amp;gt; gestartet. Dessen Python-Code liegt im Heimverzeichnis von &amp;lt;code&amp;gt;nokbot&amp;lt;/code&amp;gt; und steht unter Versionskontrolle (bitbucket-Projekt von defnull).&lt;br /&gt;
&lt;br /&gt;
Der Chat-Bot selbst macht gar nicht viel. Er liest die aktuelle Temperatur von &amp;lt;code&amp;gt;/var/therm/now&amp;lt;/code&amp;gt; und ruft das &amp;lt;code&amp;gt;schedule.py&amp;lt;/code&amp;gt;-Skript auf, um die Temperaturen und Zeiten festzulegen und anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
Diejenigen, die Änderungen an dem Jabber Bot vornehmen wollen, fragen defnull am besten nach Schreibzugriff auf das entsprechende git Repo. Nach Änderungen an diesem Repo kann man dem Bot per &amp;quot;reload&amp;quot; sagen, dass er sich neustarten soll. Dabei updatet er sich auch.&lt;br /&gt;
&lt;br /&gt;
=== Abschaltautomatiken ===&lt;br /&gt;
&lt;br /&gt;
Wir wollen nicht umsonst heizen. Deswegen gibt es zwei Automatiken, die die Heizung abschalten können, ohne dabei zukünftige Heizpläne zu beeinflussen:&lt;br /&gt;
&lt;br /&gt;
* Fall „Keiner ist gekommen“: Wenn die Zeit eines bestimmten Temperatur-Ziels erreicht wurde, die Wohnungstür aber noch geschlossen ist, wird automatisch ein Abschalt-Event für 60 Minuten später eingefügt (quasi &amp;lt;code&amp;gt;!kuschelig off 60min&amp;lt;/code&amp;gt;). Kommt man also etwas später und möchte es es warm halten, muss man manuell dieses Abschalt-Event entfernen. Ja, das ist suboptimal und könnte noch verbessert werden.&lt;br /&gt;
* Fall „Keiner ist mehr da“: Wenn das Heizsystem mitbekommt, dass die Tür von einem offenen in den geschlossenen Zustand wechselt, dann wird automatisch quasi ein &amp;lt;code&amp;gt;!kuschelig off&amp;lt;/code&amp;gt; ausgelöst.&lt;br /&gt;
&lt;br /&gt;
Damit das mit der Türstatusabfrage klappt, muss auf &#039;&#039;&#039;brickme&#039;&#039;&#039; der entsprechende Türstatus-Abfrage Dienst laufen.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;Pyro scheint neuerdings nicht lange &amp;quot;durchzuhalten&amp;quot; (ist dann nicht mehr erreichbar)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Der Boost wird nicht wie erwartet alle 6 Minuten sondern eher im 10-Minuten-Takt ausgelöst. Es dauert also länger, bis die Zieltemperatur erreicht ist, wenn sie überhaupt erreicht werden kann. Keine Ahnung warum. In der crontab von root steht das &amp;lt;code&amp;gt;boostiftoocold&amp;lt;/code&amp;gt;-Skript so drin, dass es alle 6 Minuten gestartet werden müsste.&amp;lt;/s&amp;gt;&lt;br /&gt;
Das Problem war das ein von /bin/therm-boost-fg angelegtes lockfile für 9 minuten existierte obwohl es eigentlich nur 5minuten 30 sekunden leben&lt;br /&gt;
sollte.&lt;br /&gt;
Das Problem müsste behoben sein ich habe es aber noch nicht getestet.&lt;br /&gt;
* &amp;lt;s&amp;gt;Der Bot fliegt noch regelmäßig aus dem MUC raus. Möglicherweise bekommt der Bot vom MUC eine Nachricht, die er nicht parsen kann (hab da eine Fehlermeldung in der screen-Session gesehen, die auf ein fehlendes Anführungszeichen hindeutet) und will dies als Fehlermeldung dem MUC berichten, welcher darauf den Bot rausschmeißt.&amp;lt;/s&amp;gt;&lt;br /&gt;
Ich denke der fehler müsste erstmal behoben sein ich habe in /lib/python3.4/site-packages/sleekxmpp/stanza/rootstanza.py die Zeilen 75-79 auskommentiert&lt;br /&gt;
so das der bot keine Fehlermeldung mehr sendet wenn er eine Nachricht für ungültig hält.&lt;br /&gt;
Eigentlich müsste es aber eine schönere Lösung für das Problem geben.&lt;br /&gt;
* Bessere Fehlerbehandlung: Beispielsweise wird die Abschaltautomatik ohne irgendeine Art der Beschwerde ausgehebelt, wenn der Türstatus-Service nicht läuft. Wir müssten uns mal überlegen, wie wir solche Fehler sichtbar machen können.&lt;/div&gt;</summary>
		<author><name>SebastianG</name></author>
	</entry>
</feed>