Sachverhalt: Sachverhalt: A. Die A._ AG (Beklagte) schloss am 15./17. Oktober 2002 mit der C._ AG (Unternehmerin) einen Werkvertrag über die Lieferung und Inbetriebnahme des Hotelschliesssystems X._ für ihr Motel Z._ einschliesslich der entsprechenden Beratung. Die Anlage wurde installiert. Die Parteien gerieten jedoch in Streit über die geschuldete Vergütung, insbesondere über die Frage, ob die Ablieferung fristgerecht erfolgt ist oder ob die Beklagte die Werklohnforderung mit ihrem Anspruch auf die vertraglich vereinbarte Konventionalstrafe verrechnen kann. Die Unternehmerin hat ihre Forderung gegen die Beklagte an die B._ AG (Klägerin) abgetreten. A. Die A._ AG (Beklagte) schloss am 15./17. Oktober 2002 mit der C._ AG (Unternehmerin) einen Werkvertrag über die Lieferung und Inbetriebnahme des Hotelschliesssystems X._ für ihr Motel Z._ einschliesslich der entsprechenden Beratung. Die Anlage wurde installiert. Die Parteien gerieten jedoch in Streit über die geschuldete Vergütung, insbesondere über die Frage, ob die Ablieferung fristgerecht erfolgt ist oder ob die Beklagte die Werklohnforderung mit ihrem Anspruch auf die vertraglich vereinbarte Konventionalstrafe verrechnen kann. Die Unternehmerin hat ihre Forderung gegen die Beklagte an die B._ AG (Klägerin) abgetreten. B. Die Klägerin belangte die Beklagte vor dem Amtsgericht Luzern-Stadt auf Zahlung von Fr. 22'990.45 nebst Zins, und sie verlangte die Aufhebung des Rechtsvorschlags in der gegen die Beklagte angehobenen Betreibung. Eventuell sei die Konventionalstrafe nach richterlichem Ermessen herabzusetzen. Das Amtsgericht Luzern-Stadt schützte die Klage am 24. August 2005 im Betrage von Fr. 16'122.75 nebst Zins und beseitigte den Rechtsvorschlag in diesem Umfang. Auf Appellation beider Parteien sprach das Obergericht des Kantons Luzern der Klägerin am 27. Juni 2006 Fr. 19'941.40 nebst Zins zu und hob in diesem Umfang den Rechtsvorschlag auf. Das Obergericht berechnete die Werklohnrestanz auf etwas andere Weise als das Amtsgericht und kam in Übereinstimmung mit diesem zum Schluss, die Beklagte sei nicht berechtigt, dem Werklohn eine Forderung von Fr. 20'000.-- aus Konventionalstrafe zur Verrechnung gegenüberzustellen. B. Die Klägerin belangte die Beklagte vor dem Amtsgericht Luzern-Stadt auf Zahlung von Fr. 22'990.45 nebst Zins, und sie verlangte die Aufhebung des Rechtsvorschlags in der gegen die Beklagte angehobenen Betreibung. Eventuell sei die Konventionalstrafe nach richterlichem Ermessen herabzusetzen. Das Amtsgericht Luzern-Stadt schützte die Klage am 24. August 2005 im Betrage von Fr. 16'122.75 nebst Zins und beseitigte den Rechtsvorschlag in diesem Umfang. Auf Appellation beider Parteien sprach das Obergericht des Kantons Luzern der Klägerin am 27. Juni 2006 Fr. 19'941.40 nebst Zins zu und hob in diesem Umfang den Rechtsvorschlag auf. Das Obergericht berechnete die Werklohnrestanz auf etwas andere Weise als das Amtsgericht und kam in Übereinstimmung mit diesem zum Schluss, die Beklagte sei nicht berechtigt, dem Werklohn eine Forderung von Fr. 20'000.-- aus Konventionalstrafe zur Verrechnung gegenüberzustellen. C. Die Beklagte beantragt dem Bundesgericht mit eidgenössischer Berufung die Aufhebung des angefochtenen Urteils und die Abweisung der Klage. Sie hält daran fest, dass sie berechtigt sei, die noch offene Werklohnforderung mit einer Konventionalstrafe von Fr. 20'000.-- zu verrechnen. Die Klägerin schliesst auf kostenfällige Abweisung der Berufung, soweit darauf einzutreten sei.